Intereting Posts
Можно ли экспортировать WordPress из командной строки? get_post_meta возвращает сломанный путь в изображении src Установка пути переменной в каталог шаблонов внутри скрипта Случайные домашние фоновые изображения с заголовком Несколько WordPress на виртуальном хосте Сообщение WordPress видно только тем, у кого есть ссылка Поиск пользовательского таксономического термина по имени Как предотвратить WordPress для кодирования html в сообщении? WordPress 3.2 нарушил мой код TinyMCE Ошибка при обновлении WordPress, не запрашивает пароль FTP, просто ошибка Крюк, который срабатывает при изменении автора сообщения расширенная лицензия MIT Может ли детская тема, основанная на теме Starker, быть выпущена как бесплатная тема для публичного использования? загрузить определенный контент только на первой странице разбивки на страницы Как отлаживать функции vars внутри функции в файле functions.php?

Скрыть страницы в зависимости от роли

Я пытался найти способ ограничить пользователя видеть некоторые страницы в меню «страницы» на панели администратора.

Я заглянул в файл edit.php и заметил:

} elseif ( 'page' == $post_type ) { 

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

Администратор сможет видеть все сообщения.

SubAdmin сможет видеть только некоторые страницы.

Как я могу отредактировать файл edit.php (или какой-либо другой файл php), чтобы сделать это?

Чтобы получить текущую роль пользователя

 $current_user = wp_get_current_user(); if ( !($current_user instanceof WP_User) ) return; $roles = $current_user->roles; //$roles is an array 

После получения идентификаторов заданных параметров роли, которые вы хотите показать в соответствии с ролями (например)

  if($roles=='administrator'){ $args=array('21','22','23'); } or if($roles=='subscriber'){ $args=array('24','25','26'); } 

вы можете использовать parse_query фильтра parse_query для исключения ваших страниц с помощью атрибута post__not_in

 add_filter( 'parse_query', 'exclude_pages_from_admin' ); function exclude_pages_from_admin($query) { global $pagenow,$post_type; if (is_admin() && $pagenow=='edit.php' && $post_type =='page') { $query->query_vars['post__not_in'] = $args } } 

Важные ссылки:

  • Скрыть страницу в конце администратора без плагина?
  • Как узнать роль текущего пользователя в WordPress?