Возможности меню в WordPress

30 мар. 2011 г., 18:30:04
Просмотры: 18.8K
Голосов: 3

Можно ли указать две группы пользователей (например, администраторов и редакторов) в поле capability для админ-меню? Я пробовал следующий код, но он не работает:

add_submenu_page(
     'my-top-level-handle',
     'Page title',
     'Sub-menu title',
      array('administrator', 'editor'),
     'my-submenu-handle',
     'my_magic_function'
);

Сообщение об ошибке:

Warning: Illegal offset type in isset or empty in C:\wamp\www\wordpress\wp-includes\capabilities.php on line 712

3
Комментарии

Вы не должны передавать роль (или роли) в параметр capability. Укажите возможность, которая есть только у редакторов (или выше), и страница будет доступна как администраторам, так и редакторам.

t31os t31os
30 мар. 2011 г. 18:57:21

@t31os Пожалуйста, перестаньте публиковать свои ответы в комментариях, иначе я не смогу начислить вам заслуженную репутацию. :)

fuxia fuxia
31 мар. 2011 г. 01:12:36

@toscho - Иногда я просто хочу прокомментировать и ответить, даже не осознавая этого, я слишком нетерпелив, чтобы подумать перед тем, как нажать кнопку... извините.. :)

t31os t31os
31 мар. 2011 г. 01:28:03
Все ответы на вопрос 2
0

Параметр capability функции add_submenu_page() может принимать только одну конкретную capability (возможность), поэтому если вы используете встроенные роли, вы можете выбрать capability из длинного списка, которая есть как у администраторов, так и у редакторов. Можно свободно использовать любую из следующих:

  • moderate_comments
  • manage_categories
  • manage_links
  • unfiltered_html
  • edit_others_posts
  • edit_pages
  • edit_others_pages
  • edit_published_pages
  • publish_pages
  • delete_pages
  • delete_others_pages
  • delete_published_pages
  • delete_others_posts
  • delete_private_posts
  • edit_private_posts
  • read_private_posts
  • delete_private_pages
  • edit_private_pages
  • read_private_pages
30 мар. 2011 г. 19:40:59
1

Как сказал t31os, вы можете использовать возможности (capabilities) вместо ролей. Один из способов - это использование стандартных возможностей WordPress. (Более продвинутый метод - добавление пользовательской возможности к выбранным ролям.) Стандартные возможности находятся в файле wp-admin/includes/schema.php в функциях, вызываемых через populate_roles().

Если вы используете стандартные роли/возможности, вы можете ограничить доступ только для администраторов и редакторов с помощью возможностей level_7 или edit_others_posts, или нескольких других.

30 мар. 2011 г. 19:27:42
Комментарии

level устарел уже несколько лет. Возможно, в ближайшем будущем он будет удален.

fuxia fuxia
31 мар. 2011 г. 01:14:29