Using login_form from bbPress on a WordPress site
-
I’ve managed to integrate everything perfectly between my WordPress and bbPress site except this last part. I want to call up <?php login_form(); ?> from bbPress and show it in my WordPress header.
The reason I want to do this because I have a “Login” and “Register” button that changes to something different if the user is logged in. Like this;
Is this possible? Thanks for all help so far. The bbPress community has been very helpful so far
-
Before calling the bbPress function just add:
<?php require_once ABSPATH .'/forum/bb-load.php'; ?>
You can use
is_user_logged_in()
WordPress function for that, like:<?php
if ( is_user_logged_in() ) {
// Logged in HTML here
} else {
// Login form HTML here
}
?>The solution suggested by Pelle would work, but would add a lot of load on your blog.
@Gautam: yeah sorry, I suggested that because I’m testing with no users db sharing, so I’ve to use
bb_is_user_logged_in()
instead of WP’s function.@ mr_pelle & Gautam … I’ve tried it.. but nothing happened… I’m also searching the same solution..but not found any answer yet.. can you people please solve this topic…
We really need it..
here is my topic…
https://bbpress.org/forums/topic/wordpress-registration-and-login-via-bbpress
Thanks,
pagal
Hey guys,
You’re really trying to do something here that was never intended.
bbPress was coded to create the same (or a readable) cookie from wordpress.
Deep Integration, the allowing of wordpress functions to be called in bbPress, is totally unsupported and unintentional. If you can hack it to make it work then cool, but really, you’re on your own for the most part.
Calling bbpress functions in wordpress is always always always going to cause issues in the long run. it wasn’t built for it in any way shape or form. It’s a square peg in a round hole scenario, and if you can push something through then awesome, but sometimes it’s just not worth it.
The simplest and most straight forward solution is to work out what you want to do, and code that directly.
In this case:
<?php
if ( is_user_logged_in() || bb_is_user_logged_in() ) {
// Logged in user
// Hardcode your form here
} else {
// Not logged in
// Hardcode your form here
}
?>
Remember, hardcoding is your friend, because YOU control it
@ kevinjohngallagher … I’m not a techi person.. can you please tell me what code of bbpress will use in “Hardcode your form here” and”Hardcode your form here” to show the bbpress login form into wordpress…
Well thats the bit thats up to you, you can have anything you want in there, just add the HTML you need. For most people though you can just copy the HTML output of the form you currently have. For me, that’s this:
<form class=”login” method=”post” action=”/forums/bb-login.php”>
<label>Username: <input name=”user_login” type=”text” id=”user_login” size=”13″ maxlength=”40″ value=”” tabindex=”1″ />
</label>
<label>Password: <input name=”password” type=”password” id=”password” size=”13″ maxlength=”40″ tabindex=”2″ />
</label>
<input name=”re” type=”hidden” value=”” />
<input type=”hidden” name=”_wp_http_referer” value=”/forums/” /> <input type=”submit” name=”Submit” id=”submit” value=”Log in »” tabindex=”4″ />
<input name=”remember” type=”hidden” id=”remember” value=”1″ tabindex=”3″ checked />
</form>
The simplest and most straight forward solution is to work out what you want to do, and code that directly.
In this case:
<?php
if ( is_user_logged_in() || bb_is_user_logged_in() ) {
// Logged in user
// Hardcode your form here
} else {
// Not logged in
// Hardcode your form here
}
?>You cannot call
bb_is_user_logged_in()
without prior inclusion ofbb-load.php
, though…I’m really confused, how can you be using bbpress and not have bb-load be called? bbPress doesn’t load if it’s not called :S
First:
If you’re building a wordpress website and want to include bbPress functions, I’d strongly suggest re-reading this:
Deep Integration, the allowing of wordpress functions to be called in bbPress, is totally unsupported and unintentional. If you can hack it to make it work then cool, but really, you’re on your own for the most part.
Calling bbpress functions in wordpress is always always always going to cause issues in the long run. it wasn’t built for it in any way shape or form. It’s a square peg in a round hole scenario, and if you can push something through then awesome, but sometimes it’s just not worth it.
Second of all, you could do this:
<br />
if(function_exists('bb_is_user_logged_in'))<br />
{</p>
<p>}<br />Third:
in WordPress:
<br />
<?php<br />
if ( is_user_logged_in() ) {<br />
// Logged in user<br />
// Hardcode your form here<br />
} else {<br />
// Not logged in<br />
// Hardcode your form here<br />
}<br />
?><br />in bbPress:
<br />
<?php<br />
if ( bb_is_user_logged_in() ) {<br />
// Logged in user<br />
// Hardcode your form here<br />
} else {<br />
// Not logged in<br />
// Hardcode your form here<br />
}<br />
?><br />Overall:
I suppose what I’m trying to put across to mr_pelle, pagal and mikkelsen is that you’re trying to come up with an eloquent/easy/catch-all solution that doesn’t really exist.
bbPress and WordPress don’t play that nice together (reguardless of what the front page of this website says). Integrated cookies (logged into one means you’re logged into the other) is really where the buck stops; and any deeper integration is really really unsupported.
You’re best bet, without a shadow of a doubt, is to hardcode things to look and act the way you want them; and treat wordpress and bbpress differently. The realism is if you can’t code, then bbPress is definately not for you – sadly. We can help and guide the best we can, and there are some great people helping on this board, but at the end of the day, we can’t give out generic answers that are sure to work I’m afraid (honestly we’d love to).
mikkelsen said:
I want to call up <?php login_form(); ?> from bbPress and show it in my WordPress header.
I thought bbPress were not yet loaded in his WP header…
Hardcoding is not a good choice IMHO, because it means you have to update many pages everytime you change your mind just on a single line of code. Not to mention that the code you suggested does not handle login errors…
I’ve successfully completed a “deep integration” and I’m currently testing another pretty integrated installation, without users db sharing and it works fine.
Why do you think bbPress and WordPress don’t play that nice together (reguardless of what the front page of this website says)? Wasn’t bbPress born for this (and more)?
Dear buddies I want to correct you both..
the code was https://codex.wordpress.org/Function_Reference/is_user_logged_in
<?php
if ( is_user_logged_in() ) {
echo ‘Welcome, registered user!’;
} else {
echo ‘Welcome, visitor!’;
};
?>
and with this there is no need to call bb-load.php into wp…
Now I’ve replaced kevinjohngallagher’s html form with, Welcome, visitor!.. and its working fine now..
but the problem is the after login I want to display the register user’s name and his profile and log out link..suppose
Edit My profile | Admin | Log out wanna replace with “Welcome, registered user!”
but I’m not able to execute the php code to display the logged in user name into echo ‘php code’;
is there any solution?
Thanks
Morning lads,
Sun is shining here, hope you’re all having a great day.
I think we’re going in circles a little here; and its a position we’ve all been in and can feel your pain a little.
I see where I might have confused you yesterday.
Including the WordPress loader in the bbPress config file, so that bbPress has access to WordPress functions, is where most (if not all) of the deep integration questions/work/answers have been derived from. It’s a one way system, calling wordpress functions in bbpress. It’s not a two way system (where wordpress can call bbpress functions, and vice versa).
Hardcoding is not a good choice IMHO, because it means you have to update many pages everytime you change your mind just on a single line of code
Not really. You’d have to edit it once in the header in wrodpress and once in the header in bbpress. Being absolutely frank with you, that is the minimum you have to do everytime you make a change to your themes anyway because bbpress and wordpress don’t load the same theme files.
The way to think of bbPress and WordPress is of two separate systems that share login cookies and you can fake each’s themes make look like each other.
It’s a tough nut to get round, espeically with them being built and maintained by the same company (who are usually awesome at this sort of thing), but really, and it pains me to say this, they don’t integrate. You/me/everyone read the front page and assume it’s not [trying not to say the word ‘lie’ here]; and we expect it to be one thing and it’s not. I don’t say that to casue annoyance, i’m just tyring to manage expectations a little.
bbPress and WordPress are two separate systems which can be made to share login cookies.
Wasn’t bbPress born for this (and more)?
Nope.
bbPress was born for the sole purpose of running the wordPress support forums.
Cookie integration was a nice idea added sometime around 0.8 (as i recall), was awesome for 5 weeks with 0.9 before a wordpress update broke it. Automattic got round to fixing it some 14 months later.
bbPress playing nice with wordpress is a nice hook on the front page, it is not now, nor shall be, it’s purpose. (hence Matt telling people to not use the software, and that he’s scrapping it to become a wordPress plugin instead).
Not to mention that the code you suggested does not handle login errors…
Yeah it does. Login errors are always handled on the login page. (wp-login.php and bb-login.php). All we’ve built is a form that points to those pages.
If you login successfully you’ll be redirected back to your page, if not you’ll hit the original/default login page with the error.
if you’re looking to recreate the wp-login/bb-login page on every/all pages with all the functionality that entails, then you’ve a much bigger job on your hands, and if i’m honest, i’d head to the wordpress forums for some help there (in my experience wordpress is fussy about wp-login being used).
Hi Pagal,
the code you’ve linked to looks quite identical to both mine and Gautam’s; but to clarify that also only going to work on WordPress files (not bbPress) unless you have Deep Integration enabled and working.
Presuming then that you’re working from wordpress and/or with deeply integrated bbpress this code should help:
if ( !$user_id ) {
$current_user = wp_get_current_user();
$user_id = $current_user->ID;
} else {
$user_id = (int) $user_id;
}
if ($user_id != 0)
{
$userdata = get_userdata($user_id);
$pagal_this_is_the_username_you_want = $userdata->user_login;
}
@ kevinjohngallagher… now it works
@ mr_pelle..I’m really sorry that after using bb-load.php into wp I was facing various problems..they are pointed at
https://bbpress.org/forums/topic/wordpress-registration-and-login-via-bbpress
@ kevinjohngallagher… I really appreciate your help that you safe me from using bb-load.php into wp ..thanks,
Now I’m agree with your statement i.e.
Remember, hardcoding is your friend, because YOU control it
I’m sorry to tell you people that..its working on localhost correctly but not on live… depressed again…topic still not resolved
When you say it does not work mate, can you tell us what it does instead?
It might be a quick fix
it takes me to local host… and my code was..
<?php
if ( is_user_logged_in() ) {
echo ”;
} else {
echo ‘
<table width=”480″ height=”90″ border=”0″ align=”right” >
<tr>
<td align=”left” >
<form class=”login” method=”post” action=”http://www.mysite.com/forums/bb-login.php”>
<div>
<label> Username
<input name=”user_login” type=”text” id=”quick_user_login” size=”13″ maxlength=”40″ value=”” tabindex=”1″ />
</label>
<label>
Password
<input name=”password” type=”password” id=”quick_password” size=”13″ maxlength=”40″ tabindex=”2″ />
</label>
<input name=”re” type=”hidden” value=”” />
<input type=”hidden” name=”_wp_http_referer” value=”/” />
<input type=”submit” name=”Submit” class=”submit” value=”Log in” tabindex=”4″ />
</div>
<div class=”remember”>
<label>
<input name=”remember” type=”checkbox” id=”quick_remember” value=”1″ tabindex=”3″ />
Remember me
</label>
</div>
</form>
</td>
</tr>
</table>
‘;
};
?>
<?php } ?>
@kevinjohngallagher please did not say this time “write your own code”
What would you like me to say?
You haven’t told me what’s you’re expecting teh code to do, and what it does wrong instead?
Please, I want to help, but “it takes me to localhost” gives me nothing to work with
@kevinjohngallagher you can’t understand what’s the problem?
I think everything clear in ma last post…
Pagal, please describe the problem you’re having in a new topic. It’s not clear what is happening, when it’s happening or what you expect to happen instead. Please start a new topic with that information.
- You must be logged in to reply to this topic.