Изменить права на просмотр страницы в админке

👍 Научим создавать сайты на WordPress бесплатно за 19 уроков. Подробнее →

Как изменить права на просмотр страницы в админке?
Функция «remove_menu_page» лишь убирает меню из панели, но введя адрес, на страницу все равно можно войти.
Можно ли убрать это функцией?

Создай свой первый сайт на WordPress

Track
Оцените автора
Добавить комментарий

  1. tiaurus

    Когда-то давно была у меня такая потребность при оптимизации клиентского блога. Я ее решил таким способом:

    function disable_user_admin_menu_access() {    
      if ( is_admin() ) {
        $user = wp_get_current_user();
        if ( XXX != $user->ID )
          wp_die( 'У вас нет доступа к этой странице.' );
      }
    }  
    add_action( 'load-edit.php', 'disable_user_admin_menu_access' );
    add_action( 'load-upload.php', 'disable_user_admin_menu_access' );
    add_action( 'load-link-manager.php', 'disable_user_admin_menu_access' );
    add_action( 'load-edit-comments.php', 'disable_user_admin_menu_access' );
    add_action( 'load-themes.php', 'disable_user_admin_menu_access' );
    add_action( 'load-plugins.php', 'disable_user_admin_menu_access' );
    add_action( 'load-tools.php', 'disable_user_admin_menu_access' );
    add_action( 'load-options-general.php', 'disable_user_admin_menu_access' );
    add_action( 'load-options.php', 'disable_user_admin_menu_access' );
    

    XXX — это ID пользователя (администратора), которому можно везде. Остальные увидят только надпись У вас нет доступа к этой странице ну или что-то подобное.

    То есть нужно ставить действие вида load-название_скрипта. Если подвести курсор к пункту Записи, то он покажет ссылку http://…/wp-admin/edit.php, где edit.php и есть название скрипта.

    Код вставляется в файл functions.php. В последней версии WordPress названия скриптов админки могут быть другими — перед употреблением проверяйте.

    Ответить
  2. Track автор

    Спасибо!

    Ответить
  3. Track автор

    А ка закрыть доступ например к этой странице
    /wp-admin/admin.php?page=jetpack

    Ответить
  4. Track автор

    Вот нашел такой вариант
    тут можно использовать $_GET[‘page’]

    //Запретить просмотр страниц в админке
    function my_restrict_access_meassage(){
       if ( is_admin())
    	{
        global $pagenow;
        if (($pagenow == 'admin.php' && $_GET['page']=='jetpack' || $pagenow == 'index.php') && !current_user_can( 'level_10' )){
            echo '<div class="wrap"><br />
                <div id="message" class="error">You Dont have the right permissions to access this page</div>
            </div>';
            exit();
        }
    }
    }
    add_action('admin_head','my_restrict_access_meassage');
    Ответить
    1. tiaurus

      Ну это примерно то же самое, только в нем вместо конкретного ID пользователя указываются права. Можете смело использовать этот вариант.

      Ответить