remove “edit your profile” from admin menu bar

The question:

How can I remove “edit your profile” submenu under “my-account-with-avatar” admin menu bar, while still keeping the avatar and logout?

The Solutions:

Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.

Method 1

There is a remove_menu hook for the admin menu bar.

The class you want to hook into $wp_admin_bar , you can see the remove function here and test it out since there is no documentation on it ( line 86), it should work with the submenu ID.

http://core.trac.wordpress.org/browser/tags/3.2.1/wp-includes/class-wp-admin-bar.php

Since you did not seem to believe me here is the code………

function ya_do_it_admin_bar_remove() {
        global $wp_admin_bar;

        /* **edit-profile is the ID** */
        $wp_admin_bar->remove_menu('edit-profile');
 }

add_action('wp_before_admin_bar_render', 'ya_do_it_admin_bar_remove', 0);

Method 2

WordPress has introduced new stufs (nodes).

I was searching for remove completly the ‘user account box’ and add a simple logout :

//http://codex.wordpress.org/Function_Reference/get_nodes
//http://codex.wordpress.org/Function_Reference/add_node

add_action( 'admin_bar_menu', 'remove_my_account', 999 );
function remove_my_account( $wp_admin_bar ) {
    $wp_admin_bar->remove_node( 'my-account' );
}


add_action( 'admin_bar_menu', 'add_logout', 999 );
function add_logout( $wp_admin_bar ) {
    $args = array(
        'id'     => 'logout',           // id of the existing child node (New > Post)
        'title'  => 'Se déconnecter',   // alter the title of existing node
        'parent' => 'top-secondary',    // set parent
    );
    $wp_admin_bar->add_node( $args );
}

Method 3

I’m not sure if you can remove it (haven’t checked), but you may achieve the same using css to hide the edit your profile link. The list item has an id ‘wp-admin-bar-edit-profile’ which you use to hide it. This is the html used in the admin bar:

<li id="wp-admin-bar-edit-profile" class="">
  <a href="http://www.example.com/wp-admin/profile.php" rel="nofollow noreferrer noopener">Edit My Profile</a>
</li>

I’m using the following css:

#wp-admin-bar-edit-profile { display: none }

This hides the link in the admin bar without any of the other links. Add this css snippet to your theme’s style.css and the link will be hidden in the admin bar when viewing your site. Hiding it in the admin bar when viewing the WordPress backend involves a bit more and might be moot since there’s also a link to the profile in the menu on the left.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Comment