Intereting Posts
Genesis Child Theme Изменение отображения комментариев Почтовые запросы по широте и долготе Как безопасно предоставить $ _POST var в WP_Query с PHP 7? Захват / название страницы / как в шаблоне, так и в номере Как обращаться с уведомлением о метадании основного кода на действительный ввод? Загрузка пользовательского языкового файла для плагина Создание URL-адреса, изменяющего фильтр, в меню навигации, но sth неверно Показать эскиз для категории? Уникальные почтовые метазначения Предварительный выбор категории для пользовательского типа сообщения Как я могу определить, какие из моих страниц являются страницами с одним просмотром? Dukapress jQuery ("form.product_update"). Livequery не является функцией Плагин «Мета-бокс»: реализация мета-полей в пользовательском типе сообщений Изменение порядка загрузки плагинов Как создать пользователя с помощью нового JSON api в 4.7?

Получение списка доступных в настоящее время роли на сайте WordPress?

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

Каков наилучший способ получить список?

Роли хранятся в глобальной переменной $wp_roles .

Идеальной функцией является get_editable_roles() из /wp-admin/includes/user.php

 function get_editable_roles() { global $wp_roles; $all_roles = $wp_roles->roles; $editable_roles = apply_filters('editable_roles', $all_roles); return $editable_roles; } 

«Редактируемая» часть состоит в том, что она предлагает другим плагинам возможность фильтровать список, если у кого-то, кроме администратора, есть привилегия 'edit_users' (и, следовательно, «админ» необходимо удалить из списка, иначе этот пользователь может сделать себя администратором) , Плагины управления ролью, используемые для создания пользовательских ролей, – это те, которые будут использовать этот фильтр. В противном случае эта функция по существу является get_roles() (которая не существует) .

Предположительно, ваш плагин предложит только страницу настроек кому-то, у кого есть возможности уровня администратора, такие как 'manage_options' и в основном администратор с доступом ко всем ролям, поэтому фильтр не должен влиять на вас.

Существует также wp_dropdown_roles() который предоставляет вам роли в качестве полей <option> для списка <select> (хотя флажки, вероятно, будут работать лучше во многих сценариях, где вы выбираете, кто имеет доступ к чему-либо) .

Попробуй это:

 function get_role_names() { global $wp_roles; if ( ! isset( $wp_roles ) ) $wp_roles = new WP_Roles(); return $wp_roles->get_names(); } 

PS хе, пропустил это объяснение и ответ, слишком быстро меня 🙂

Вот как вы можете найти список ролей без каких-либо плагинов или функции http://screencast.com/t/uaWsGLAR3Sh

Для тех, у кого есть многоязычный сайт, функция

 function wp_roles_array() { $editable_roles = get_editable_roles(); foreach ($editable_roles as $role => $details) { $sub['role'] = esc_attr($role); $sub['name'] = translate_user_role($details['name']); $roles[] = $sub; } return $roles; } 

возвращает такой локализованный массив (имена ролей на словацком языке):

 Array ( [0] => Array ( [role] => administrator [name] => Administrátor ) [1] => Array ( [role] => editor [name] => Editor ) [2] => Array ( [role] => author [name] => Autor ) [3] => Array ( [role] => contributor [name] => Prispievateľ ) )