I have a site at [[LINK href="http://pefriends.com"]]pefriends.com[[/LINK]], and I would only like to display the black Buddypress admin bar at the top for admin, and no one else.
How would you do this?
Here is the code within bp-core.php...
/* If BP_DISABLE_ADMIN_BAR is defined, do not load the global admin bar. */
if ( !defined( 'BP_DISABLE_ADMIN_BAR' ) )
require ( BP_PLUGIN_DIR . '/bp-core/bp-core-adminbar.php' );
John Cotton answers:
In your functions.php
if( !current_user_can('administrator') ) {
define( “BP_DISABLE_ADMIN_BAR’, true );
}
Spencer Barfuss comments:
That didn't work in the functions.php file.
John Cotton comments:
Try it in bp-custom.php in the BuddyPress plugin folder.
Spencer Barfuss comments:
I'm looking all throughout the plugin folder, and can't seem to find the bp-custom.php file. Do you know where it is?
John Cotton comments:
You need to create it.
See [[LINK href="http://codex.buddypress.org/extending-buddypress/bp-custom-php/"]]here[[/LINK]]
Spencer Barfuss comments:
Pasting this produces this code - [[LINK href="http://cl.ly/2x2M2w26113m0Q0f3B2G"]]http://cl.ly/2x2M2w26113m0Q0f3B2G[[/LINK]]
John Cotton comments:
OK, so it was a typo in my first instruction.
This definitely works, I've just tried it!
In your FUNCTIONS.php file put this
if( !current_user_can('administrator') ) {
define( BP_DISABLE_ADMIN_BAR, true );
}
Spencer Barfuss comments:
Brilliant! It works! Thank you so much! If I add another $5, could you help me configure the code to where I can specify certain usernames where the admin bar will show, and then for everyone else, it won't show?
John Cotton comments:
I'd discourage you from doing that as it's a maintenance headache - you should really use roles.
But if you must, this will work - just change/add to the login names array.
It means that only admins or those with a login in the list will see the bar.
global $current_user;
$logins = array( 'user_login1', 'user_login2', 'user_login3' );
if( !current_user_can('administrator') || !in_array( $current_user->user_login, $logins ) ) {
define( BP_DISABLE_ADMIN_BAR, true );
}
Spencer Barfuss comments:
I am using user roles. I will have some people as Contributors. So, I am assuming that with the code you provided, they will be able to see the Buddypress Admin bar as well? Because that is what I would like, for Contributors to be able to see the bar as well.
Thanks for your help!
John Cotton comments:
If they're either contributors or admins then
if( !current_user_can('administrator') && !current_user_can('contributor') ) {
define( BP_DISABLE_ADMIN_BAR, true );
}
Rashad Aliyev answers:
define('BP_DISABLE_ADMIN_BAR', true);
put this code to your bp-custom.php.
[[LINK href="http://codex.buddypress.org/theme-development/modifying-the-buddypress-admin-bar/hiding-the-buddypress-admin-bar/"]]Or Look at here[[/LINK]]
Rashad Aliyev comments:
More details [[LINK href="http://codex.buddypress.org/theme-development/modifying-the-buddypress-admin-bar/"]]here[[/LINK]]..
Spencer Barfuss comments:
I don't want to turn it off completely though, only for anyone who is not an admin.
Eric Looi answers:
Alternatively, you can use just this plugin: [[LINK href="http://wordpress.org/extend/plugins/buddypress-admin-bar-mods/"]]http://wordpress.org/extend/plugins/buddypress-admin-bar-mods/[[/LINK]] or this: [[LINK href="http://wordpress.org/extend/plugins/remove-buddypress-admin-bar/"]]http://wordpress.org/extend/plugins/remove-buddypress-admin-bar/[[/LINK]]
Navjot Singh answers:
Try this
if (!is_admin() ) define( 'BP_DISABLE_ADMIN_BAR', true );
code in bp-custom.php
Spencer Barfuss comments:
Ok, I added your code to it, but I guess I need to specify a specific username, instead of simply 'admin'. Does that make sense?
So, if the admin's username was <strong>freddy</strong>, I want to block the admin bar for everyone except <strong>freddy</strong>.
It hid the admin bar, but I'm an admin and need it to show for me.
Navjot Singh comments:
You mean the code has hid the admin bar for admin account as well? is_admin() is a function to check whether the current logged in user is an administrator or not. You don't need to edit it.
Spencer Barfuss comments:
Yes, it's hidden from admin as well.
Romel Apuya answers:
try..
if($current_user->user_login != 'admin'){
define( “BP_DISABLE_ADMIN_BAR’, true );
}
Ram Kumar answers:
You could use a function inside your theme's functions file to selectively disable it for specific users.
function disable_bar_for_user( $ids ) {
if( !is_user_logged_in() )
return;
global $current_user;
if( is_numeric( $ids ) )
$ids = (array) $ids;
if( !in_array( $current_user->data->ID, $ids ) )
return;
add_filter( 'show_admin_bar', '__return_false', 9 );
}
Then call it for the user or users you want to disable the bar for..
<strong>Single User:</strong>
disable_bar_for_user(1);
<strong>Multiple users:</strong>
disable_bar_for_user(array(1,2,3));
If you want to just turn it off altogether, then the following should do it(instead of the function).
add_filter( 'show_admin_bar', '__return_false', 9 );
Hope that helps.. :)
Ram Kumar comments:
You could use a function inside your theme's functions file to selectively disable it for specific users.
function disable_bar_for_user( $ids ) {
if( !is_user_logged_in() )
return;
global $current_user;
if( is_numeric( $ids ) )
$ids = (array) $ids;
if( !in_array( $current_user->data->ID, $ids ) )
return;
add_filter( 'show_admin_bar', '__return_false', 9 );
}
Then call it for the user or users you want to disable the bar for..
<strong>Single User:</strong>
disable_bar_for_user(1);
<strong>Multiple users:</strong>
disable_bar_for_user(array(1,2,3));
If you want to just turn it off altogether, then the following should do it(instead of the function).
add_filter( 'show_admin_bar', '__return_false', 9 );
Hope that helps.. :)
Spencer Barfuss comments:
Your code would be ideal, but I need to make it work with the pasted code above from the bp-core.php file. I added it to my original question. Check it above, and then if you can, work your code into that one. I absolutely stink at PHP.
Thanks!
Svilen Popov answers:
if (is_user_logged_in() && current_user_can('administrator') && !defined('BP_DISABLE_ADMIN_BAR'))
require ( BP_PLUGIN_DIR . '/bp-core/bp-core-adminbar.php' );
Spencer Barfuss comments:
That code produced this error - http://cl.ly/111b0S2P0T0B0H2k413u
Svilen Popov comments:
Try to add in functions.php a global variable:
global $tmp_admin;
$tmp_admin = $current_user_can('administrator');
and then in bp-core.php:
global $tmp_admin;
if ($tmp_admin && !defined( 'BP_DISABLE_ADMIN_BAR' ) )
require ( BP_PLUGIN_DIR . '/bp-core/bp-core-adminbar.php' );
Spencer Barfuss comments:
Pasted as you have it here, it gives me this error - [[LINK href="http://cl.ly/3R472y1m023l3l1X1m2L"]]http://cl.ly/3R472y1m023l3l1X1m2L[[/LINK]].
Svilen Popov comments:
remove <strong>$</strong> from <strong>$current_user_can('administrator');</strong>
<blockquote>global $tmp_admin;
$tmp_admin = <strong>current_user_can('administrator');</strong></blockquote>