markratledge
  • 0
Гуру

Как добавить другого пользователя в эту функцию remove_menu?

  • 0

Довольно понятно. Как добавить в эту функцию другого пользователя для functions.php, т. е. пользователя 2, которому будут показаны другие пункты меню, чем пользователю 1?

Я попытался добавить еще одно if($current_user->user_login == 'user2') условие, но не повезло. User2 будет иметь разные права администратора, если это имеет значение. Но в основном мне нужно иметь возможность показывать один набор пунктов меню для пользователя1 и другой набор для пользователя2, поэтому мне нужно выяснить некоторую логику if else. Но я попробовал это, и я получаю ошибку «не могу повторно объявить ранее объявленную» для функции меню.

  function remove_menus()
{
    global $menu;
    global $current_user;
    get_currentuserinfo();

    if($current_user->user_login == 'user1')
    {
        $restricted = array(
                            __('Links'),
                            __('Comments'),
                            __('Appearance'),
                            __('Plugins'),
                            __('Profile'),
                            __('Tools'),
                            __('Settings')
        );
        end ($menu);
        while (prev($menu)){
            $value = explode(' ',$menu[key($menu)][0]);
            if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
        }
        }
}

add_action('admin_menu', 'remove_menus');
Share
  1. Как насчет использования current_user_can и проверки по имени роли?

    • 0
  2. Почему бы просто не добавить еще один if?

    function remove_menus(){
        global $menu;
        global $current_user;
        get_currentuserinfo();
       //check first user
        if($current_user->user_login == 'user1'){
            $restricted = array(
                                __('Links'),
                                __('Comments'),
                                __('Appearance'),
                                __('Plugins'),
                                __('Profile'),
                                __('Tools'),
                                __('Settings')
            );
            end ($menu);
            while (prev($menu)){
                $value = explode(' ',$menu[key($menu)][0]);
                if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
            }
        }
        //check second user
        if($current_user->user_login == 'user2'){
            $restricted = array(
                                __('Links'),
                                __('Comments'),
                                __('Appearance'),
                                __('Plugins')
            );
            end ($menu);
            while (prev($menu)){
                $value = explode(' ',$menu[key($menu)][0]);
                if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
            }
        }
    
    }
    
    add_action('admin_menu', 'remove_menus');
    

    одна и та же функция, но два разных пользователя получат разные меню.

    • 0
  3. Не можете ли вы просто добавить or в свою условную логику?

    if( $current_user->user_login == 'user1' || $current_user->user_login == 'user2' )
    

    Или, что еще лучше, просто используйте массив, чтобы его было легче обновлять.

    Перед if строкой, упомянутой выше..

    $_menu_remove_users = array( 'user1', 'user2' ); 
    

    Затем замените существующее условие if на..

    if( in_array( $current_user->user_login, $_menu_remove_users ) )
    

    Затем вы можете обновить массив по мере необходимости, не переписывая свою условную логику.

    • 0
  4. Вот небольшой плагин, который я написал, он работает и протестирован.

    Вы можете просто загрузить его и протестировать, используя следующую функцию внутри вашего functions.php файла:

    Как

    # Add a user to a user group from inside your functions.php file
    function test_me( $user_group_A )
    {
        $user_group_A[] = 'Take your own name for testing';
    
        return $user_group_A;
    }
    add_filter( 'user_group_A', 'test_me' );
    

    Примечания

    Добавить одного (или нескольких) пользователей в одну из групп так же просто, как показано выше. Изменение групп пунктов меню почти такое же. Просто обработайте эти массивы внутри функций вашей темы.

    • 0
  5. Похоже, вы пытаетесь скрыть определенные пункты меню для определенных пользователей, вы можете сделать это, используя роли и возможности вместо жесткого кодирования имен пользователей и удаления пунктов меню. Плагин Capsman позволяет вам гибко устанавливать разрешения для ролей администратора, редактора и даже определять новые. Если у пользователя нет разрешений на просмотр страницы настроек, ссылки администратора будут удалены WordPress.

    • 0
  6. Также вы можете использовать плагин Adminimize, с помощью которого вы можете легко скрывать меню для разных ролей; также пользовательские роли. может быть, это проще, как пользовательский код, если вам это нравится.

    • 0

Оставить ответ

You must login to add an answer.