Hi Tony,
I had a similar need in controlling the WP-Admin bar…. in my case I wanted to hide elements in the admin-toolbar…. but you can use the same logic using the WP function add_node () and remove_node() to gain control over what to users can see.
I used the following code in my custom functions file located in the mu-plugin folder:
////////////////////////////////////////////////////////////////////////////////
//Kampester Custom function Adapted For MU Buddypress Newtwork - New function
////////////////////////////////////////////////////////////////////////////////
function admin_bar_remove_this(){
global $wp_admin_bar;
if(!is_super_admin()){
$wp_admin_bar->remove_node('blogs-menu');
$wp_admin_bar->remove_node('account-menu');
$wp_admin_bar->remove_node('new-content');
$wp_admin_bar->remove_node('my-sites');
}
$wp_admin_bar->remove_node('wp-logo');
}
add_action('wp_before_admin_bar_render','admin_bar_remove_this');
To start I used this function to get a entire list of all the nodes available in my install – this code will place menu item in your admin-bar that you can use to identify the elements naming convention. I got the code from the WP codex….
Hope this helps.
add_action( 'wp_before_admin_bar_render', 'add_all_node_ids_to_toolbar');
function add_all_node_ids_to_toolbar() {
global $wp_admin_bar;
$all_toolbar_nodes = $wp_admin_bar->get_nodes();
if($all_toolbar_nodes){
// add a top-level Toolbar item called "Node Id's" to the Toolbar
$args = array('id' => 'node_ids', 'title' => 'Node ID\'s');
$wp_admin_bar->add_node($args);
// add all current parent node id's to the top-level node.
foreach ( $all_toolbar_nodes as $node ) {
if(isset($node->parent) && $node->parent){
$args = array(
'id' => 'node_id_'.$node->id, // prefix id with "node_id_" to make it a unique id
'title' => $node->id,
'parent' => 'node_ids'
// 'href' => $node->href,
);
// add parent node to node "node_ids"
$wp_admin_bar->add_node($args);
}
}
// add all current Toolbar items to their parent node or to the top-level node
foreach ( $all_toolbar_nodes as $node ) {
$args = array(
'id' => 'node_id_'.$node->id, // prefix id with "node_id_" to make it a unique id
'title' => $node->id,
// 'href' => $node->href,
);
if(isset($node->parent) && $node->parent){
$args['parent'] = 'node_id_'.$node->parent;
} else {
$args['parent'] = 'node_ids';
}
$wp_admin_bar->add_node($args);
}
}
}