El admin bar de WordPress ofrece enlaces directos a muchas tareas de administración, y puede ser muy útil, pero también se puede convertir fácilmente en un embrollo de links e información que rara vez utilizas, sobre todo si instalas varios plugins que añaden sus propios enlaces. Si estás en esta situación y quieres quitar parte de esta sobrecarga, WordPress lo pone muy fácil.

Para eliminar enlaces de la barra de administración tan sólo necesitas añadir una nueva función al action hook wp_before_admin_bar_render y manipular el objeto global $wp_admin_bar a través del método del método WP_Admin_Bar::remove_menu().

El método WP_Admin_Bar::remove_menu(), un wrapper del método WP_Admin_Bar::remove_node(), acepta como único parámetro un string con el identificador del menú que se quiere quitar.

Por ejemplo:

add_action( 'wp_before_admin_bar_render' function() {

  global $wp_admin_bar;

  $wp_admin_bar->remove_menu( 'wp-logo' ); // Elimina el logo WordPress
  $wp_admin_bar->remove_menu( 'new-content' ); // Elimina el menú para publicar nuevo contenido
  $wp_admin_bar->remove_menu( 'my-account' ); // Elimina el menú de usuario

} );

Para conocer el identificador de un menú del admin bar, puedes inspeccionar el elemento y mirar su id. Cada menú del admin bar tiene un id del tipo wp-admin-bar-{identificador}, dónde {identificador} es el string que debes utilizar en $wp_admin_bar->remove_menu.

Por ejemplo, si utilizamos W3TC e inspeccionamos el menú de este plugin en el admin bar, veremos lo siguiente:

W3TC menu en el WP admin bar
W3TC menu en el WP admin bar

El id es igual a wp-admin-bar-w3tc; para quitar este menú haríamos:

add_action( 'wp_before_admin_bar_render' function() {

  global $wp_admin_bar;

  $wp_admin_bar->remove_menu( 'w3tc' ); // Elimina el menú de W3TC

} );

La misma metodología se utiliza para submenus. Por ejemplo, el menú para nuevo contenido contiene varios submenús para posts, páginas, archivos, usuarios, etc. Si sólo queremos quitar el submenú para nuevas páginas, podemos inspeccionar el elemento y ver que su id="wp-admin-bar-new-page"; para eliminarlo:

add_action( 'wp_before_admin_bar_render' function() {

  global $wp_admin_bar;

  $wp_admin_bar->remove_menu( 'new-page' ); // Elimina el enlace para crear nuevas páginas

} );
  • Eduardo J. Barrios

    Hola , Gracias por compartir. Una pregunta , ¿ Cómo se hace si se quiere ocutar o eliminar un enlace para un usuario determinado, por ejemplo dejarlo para el admin pero no para el editor?