Ocultar elementos del menú de administración en WordPress

3 minutos de lectura

Estoy tratando de ocultar ciertos elementos del menú de administración en WordPress de todos los usuarios excepto uno (yo mismo).

Puedo encontrar varios tutoriales, pero en su mayoría se esconden en los roles de los usuarios en lugar de los usuarios.

Encontré esto en el códice de WordPress:

<?php 
function custom_menu_page_removing() {
    remove_menu_page( $menu_slug );
}
add_action( 'admin_menu', 'custom_menu_page_removing' );
?>

Pero no lo entiendo completamente, además creo que tendré que agregarle un poco más de PHP para que el código esencialmente diga:

Si el usuario no es shaun@seedcreativity.co.uk (¡Yo!)

Luego elimine estos elementos del menú:

Id. de artículo 1, Id. de artículo 2, Id. de artículo 3, etc…

¿Alguien puede ayudar?

avatar de usuario
AfikDeri

Puede verificar la identificación del usuario:

// admin_init action works better than admin_menu in modern wordpress (at least v5+)
add_action( 'admin_init', 'my_remove_menu_pages' );
function my_remove_menu_pages() {


  global $user_ID;

  if ( $user_ID != 1 ) { //your user id

   remove_menu_page('edit.php'); // Posts
   remove_menu_page('upload.php'); // Media
   remove_menu_page('link-manager.php'); // Links
   remove_menu_page('edit-comments.php'); // Comments
   remove_menu_page('edit.php?post_type=page'); // Pages
   remove_menu_page('plugins.php'); // Plugins
   remove_menu_page('themes.php'); // Appearance
   remove_menu_page('users.php'); // Users
   remove_menu_page('tools.php'); // Tools
   remove_menu_page('options-general.php'); // Settings
  }
}

  • Genial: admin_menu no funcionará en la versión actual de wp, mientras que admin_init funciona perfectamente

    -Luca Reghellin

    11 de enero a las 10:02

Puede eliminar el menú Publicaciones para un correo electrónico dado con:

function custom_menu_page_removing() {
    if ( get_currentuserinfo()->user_email != 'shaun@seedcreativity.co.uk' )
        remove_menu_page( 'edit.php' );
}
add_action( 'admin_menu', 'custom_menu_page_removing' );

No evitará que los usuarios usen páginas eliminadas si pueden adivinar la URL correcta, por ejemplo, /wp-admin/edit.php

avatar de usuario
naveen giri

Puedes probar este código.

function remove_menus(){
     $current_user = wp_get_current_user();
    if( 'shaun@seedcreativity.co.uk' !==  $current_user->user_email){
        remove_menu_page( 'item1' ); 
        remove_menu_page( 'item2' ); 
    }

}
add_action( 'admin_menu', 'remove_menus' );

item1, item2 será el nombre de su página, por ejemplo
http://test.com/wp-admin/admin.php?page=item1
http://test.com/wp-admin/admin.php?page=item2

  • Eso es perfecto, gracias 🙂 Si quisiera agregar un segundo usuario, además de mí, ¿cómo lo agregaría? Intenté agregar: . ‘nuevo correo electrónico’ después del mío, pero no funcionó … ¿Es un complemento simple como ese?

    –ShaunTaylor

    21 de marzo de 2017 a las 17:45

  • función remove_menus(){ $usuario_actual = wp_get_usuario_actual(); if( in_array( $usuario_actual->correo_de_usuario, array(‘primerusuario@email.com’,’segundousuario@email.com’,)) ){ remove_menu_page( ‘item1’ ); remove_menu_page(‘elemento2’); } } add_action( ‘admin_menu’, ‘remove_menus’ ); úsalo así para múltiples usuarios

    – Naveen Giri

    13/04/2017 a las 10:00

  • puedes usar este complemento. wordpress.org/plugins/hide-admin-menú

    – Bhavin Thummar

    3 de enero de 2019 a las 6:20

¿Ha sido útil esta solución?