Ocultar menú de administración para un ID de usuario específico con rol de administrador

25 nov 2017, 11:41:49
Vistas: 14.5K
Votos: 6

Estoy intentando ocultar casi todos los menús del panel de administración de WordPress para un ID de usuario específico que tiene rol de administrador. Quiero darle a ese usuario solo la opción de editar un tipo de contenido personalizado llamado "lessons" y otro tipo llamado "Events".

Estoy usando un tema LMS de WordPress de themeforest por designthemes. No estoy seguro por qué este tema no da acceso al WP-admin para otros roles excepto administrador, como Editor, Colaborador, etc. Así que decidí darle a ese usuario específico el rol de administrador para que pueda acceder al panel de WordPress. Luego mi plan es simplemente ocultar otros menús de administración para este usuario.

He usado el plugin llamado User role editor pro y otros plugins gratuitos, pero nada parece funcionar con esto. Entonces probé con el siguiente código. Pero este código está eliminando estos menús de administración del panel de otros administradores también, donde quiero que estos menús solo se eliminen para este ID de usuario cuyo ID es 279 aquí. Cualquier ayuda es apreciada. Este es el enlace del sitio https://impactmarketingsystems.com/

<?php
function hide_menu(){
 global $current_user;
 $user_id = get_current_user_id();
 // echo "usuario:".$user_id;   // Usa esto para encontrar tu ID de usuario rápidamente

    if($user_id != '279'){

        // Para eliminar todo el menú de administración de Apariencia usarías:

        remove_menu_page( 'themes.php' );

        // Para eliminar el editor de temas y submenús de opciones de temas
        // del menú de administración de Apariencia, así como el submenú principal 'Temas'
        // usarías 

        remove_menu_page( 'index.php' );
        remove_submenu_page( 'index.php', 'update-core.php' );

        remove_submenu_page( 'themes.php', 'themes.php' );
        remove_submenu_page( 'themes.php', 'theme-editor.php' );
        remove_submenu_page( 'themes.php', 'theme_options' );

        remove_menu_page( 'users.php' );
        remove_submenu_page( 'users.php', 'user-new.php' );
        remove_submenu_page( 'users.php', 'profile.php' );

        remove_menu_page( 'upload.php' );
        remove_submenu_page( 'upload.php', 'media-new.php' );
        remove_submenu_page( 'upload.php', 'upload.php?page=wp-smush-bulk' );

        remove_menu_page( 'admin.php?page=Wordfence' );
        remove_submenu_page( 'admin.php?page=Wordfence', 'media-new.php' );


        remove_menu_page( 'edit.php?post_type=dt_teachers' );
        remove_submenu_page( 'edit.php?post_type=dt_teachers', 'post-new.php?post_type=dt_teachers' );

        remove_menu_page( 'edit.php?post_type=dt_portfolios' );
        remove_submenu_page( 'edit.php?post_type=dt_portfolios', 'post-new.php?post_type=dt_portfolios' );
        remove_submenu_page( 'edit-tags.php?taxonomy=portfolio_entries', 'edit-tags.php?taxonomy=portfolio_entries&post_type=dt_portfolios' );

        remove_menu_page( 'edit.php' );
        remove_submenu_page( 'edit.php', 'post-new.php' );
        remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=category' );
        remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=post_tag' );


        // Eliminar elementos del menú de Páginas
        remove_menu_page( 'edit.php?post_type=page' );
        remove_submenu_page( 'edit.php?post_type=page', 'post-new.php?post_type=page' );


        // Eliminar menú de Comentarios

        remove_menu_page( 'edit-comments.php' );

        //// Eliminar menú LMS
        remove_menu_page( 'admin.php?page=parent' );

         remove_menu_page( 'tools.php' );                  //Herramientas
         remove_menu_page( 'options-general.php' );        //Ajustes

          remove_menu_page( 'plugins.php' );        //Plugins

          remove_menu_page( 'edit.php?post_type=product' );
0
Todas las respuestas a la pregunta 1
2

El problema está con tu declaración lógica. Ahora estás intentando eliminar el panel de control del personal donde el ID de usuario no es '279', lo que significa que solo el usuario con ID 279 puede ver el panel. Puedes probar esto en la declaración if:

if(is_admin() && $user_id == '279'){ //tu código }
25 nov 2017 12:06:53
Comentarios

Gracias hermano. Era tan tonto que no podía encontrar esta lógica simple. Anteriormente intenté usar ! y sin ! pero eso no funcionó. Así que estaba confundido. Pero gracias por tu ayuda. Esto funcionó

Md. Amanur Rahman Md. Amanur Rahman
25 nov 2017 12:54:17

¡Fue un placer hermano!

Shamsur Rahman Shamsur Rahman
25 nov 2017 20:11:43