Как вывести роль пользователя wordpress

Содержание
  1. get_userdata() WP 0.71
  2. Возвращает
  3. Использование
  4. Примеры
  5. #1 Как выводить данные из полученного объекта данных
  6. #1.2 Данные в переменную
  7. #2 Методы класса
  8. WP_User_Query
  9. Правильное использование класса
  10. Параметры класса WP_User_Query
  11. Параметры вывода либо исключения из вывода конкретных пользователей
  12. Параметры поиска пользователей
  13. Параметры количества пользователей
  14. Сортировка пользователей
  15. Метаданные пользователей
  16. Сами задаем необходимые возвращаемые значения
  17. Методы и свойства класса WP_User_Query
  18. Свойства
  19. Методы
  20. Параметры объекта пользователя WP_User
  21. Смотрите также
  22. WP_User<> WP 2.7.0
  23. Возвращает Concerned user ID. * @type mixed . Optional second and further parameters, typically object ID. * > * @param WP_User $user The user object. */ apply_filters( ‘user_has_cap’, $this->allcaps, $caps, $args, $this )»> user_has_cap
  24. Возвращает
  25. Использование
  26. Свойства класса
  27. Магические методы
  28. Публичные методы
  29. Примеры
  30. #1 Проверим право юзера
  31. Пользователи в WordPress
  32. Таблица wp_users
  33. Таблица wp_usermeta
  34. Важные поля
  35. Какие данные хранятся в таблице метаданных
  36. Роли и права пользователей
  37. Список прав по ролям
  38. Мета права
  39. PHP Функции
  40. Процесс установки текущего пользователя

get_userdata() WP 0.71

Получает данные указанного пользователя в виде объекта WP_User.

Данные, возвращаемые функцией, полностью соответствуют полям таблиц БД wp_users и wp_usermeta . Описание таблиц см. тут.

Некоторые полезные значения полей таблиц wp_users и wp_usermeta , которые вы можете использовать для получения данных:

Это pluggable функция — т.е. её можно заменить из плагина. Это значит, что она будет работать (подключается) только после подключения всех плагинов, а до этого момента функция еще не определена. Поэтому нельзя вызывать эту и зависящие от неё функции прямо из кода плагина. Их нужно вызывать через хук plugins_loaded или позднее, например хук init.

Замена функции (переопределение) — в плагине можно создать функцию с таким же названием, тогда она заменит текущую функцию.

Читайте также:  Как нужно чистить осетра

Возвращает

WP_User|false . Объект данных WP_User. false — если не удалось найти указанного пользователя.

С версии 3.2 возвращаемые данные немного изменились: возвращается объект WP_User . Данные в объекте разбиваются на группы: data , caps , roles (раньше данные возвращались в общем списке). Однако, благодаря «волшебным» (служебным) методам PHP, данные можно получить как и прежде. Например, сейчас данные хранятся так: get_userdata()->data->rich_editing , но получить их можно так: get_userdata()->rich_editing , несмотря на то, что var_dump() не покажет эту взаимосвязь.

Использование

Примеры

#1 Как выводить данные из полученного объекта данных

#1.2 Данные в переменную

Еще одни пример, только тут запишем данные сначала в переменные, а затем выведем из на экран:

#2 Методы класса

Получаемый объект с помощью get_userdata() — это экземпляр класса и у него есть методы, которые можно использовать. Иногда это может пригодится. Вот простой пример получения опции пользователя, с помощью метода $user->get() :

Источник

WP_User_Query

Итак, у меня уже есть подробный пост про класс WP_Query, вот только WP_Query нужен для вывода или фильтра постов, а WP_User_Query — для вывода и фильтра пользователей. Также он позволяет вывести некоторую информацию о полученных пользователях.

Правильное использование класса

Сейчас я рассмотрю простой пример, чтобы вам было понятно, как всё устроено, а затем уже более детально углублюсь в описание параметров, объекта WP_User и пр.

Параметры класса WP_User_Query

А сейчас я постараюсь максимально подробно описать все параметры, которые принимает класс WP_User_Query.

Параметры вывода либо исключения из вывода конкретных пользователей

Параметры поиска пользователей

  • ID — понятное дело, ID пользователей,
  • login или user_login — имя пользователя (логин),
  • nicename или user_nicename — колонка найснейм,
  • email или user_email — емайлы пользователей,
  • url или user_url — URL сайтов пользователей.

Параметры количества пользователей

Сортировка пользователей

  • ID — по ID,
  • display_name — по отображаемому имени (задается самим пользователем в админке),
  • name , user_name — по имени пользователя,
  • login , user_login — по логину пользователя (по умолчанию),
  • nicename , user_nicename — по найснейму,
  • email , user_email — по адресу электронной почты,
  • url , user_url — по URL сайтов пользователей,
  • registered , user_registered — по дате регистрации пользователей,
  • post_count — по количеству публикаций,
  • meta_value — по значению произвольного поля (параметр meta_key в данном случае обязателен — описан чуть ниже),

order (строка) Порядок сортировки, ASC — по возрастанию (установлен по умолчанию), DESC — по убыванию.

Метаданные пользователей

key аналог meta_key , value аналог meta_value , compare аналог meta_compare , type (строка) тип данных, содержащихся в value , возможны значения CHAR (по умолчанию), BINARY , NUMERIC , DECIMAL , DATE , TIME , DATETIME , SIGNED , UNSIGNED . relation (строка) соотножение условий, принимает значения:

  • OR — ИЛИ (должно выполняться хотя бы одно из заданных условий),
  • AND — И (должны выполняться все заданные условия).

Очень много примеров по meta_query есть в этой статье (там конечно meta_query используется для вывода постов, но для пользователей оно работает точно так же).

И один пример всё же тут:

Сами задаем необходимые возвращаемые значения

  • ID — возвращает массив, состоящий из ID пользователей,
  • all (по умолчанию), all_with_meta — возвращает всю информацию о пользователях в виде массива объектов WP_User .

Методы и свойства класса WP_User_Query

Итак, начнем с того, что создадим объект WP_User_Query :

В данном случае $uq — это наш объект, давайте глянем, какие у него есть методы и свойства.

Свойства

Методы

Параметры объекта пользователя WP_User

Для удобства и наглядности давайте рассмотрим параметры пользователей на примере.

Тема довольно обширная, если вы считаете, что следует более подробно рассмотреть какой-либо момент, пожалуйста, напишите об этом в комментариях — я постараюсь вам всё объяснить и показать.

Смотрите также

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

Источник

WP_User<> WP 2.7.0

Класс WordPress который работает с отдельным пользователем: позволяет получить данные пользователя, удалить/добавить возможности и т.д.

Чтобы получить экземпляр этого класса для текущего пользователя, используйте функцию wp_get_current_user().

Хуки из класса

Возвращает Concerned user ID. * @type mixed . Optional second and further parameters, typically object ID. * > * @param WP_User $user The user object. */ apply_filters( ‘user_has_cap’, $this->allcaps, $caps, $args, $this )»> user_has_cap

Возвращает

Использование

Если вместо $id передан объект WP_User, или другой объект, или массив данных юзера, то указанные данные будут взяты без использования кэша. В противном случае (если ID — число) данные будут получены из кэша или из БД с помощью метода get_data_by() , он же устанавливает кэш, если его еще нет.

Свойства класса

Если указаны id или name конструктор добавит к существующим свойствам все свойства пользователя из таблицы wp_usermeta и wp_users , такие как: user_login , user_pass , user_nicename , user_email , user_url , user_registered , user_activation_key , user_status , display_name , spam (MU сборка), deleted (MU сборка).

Магические методы

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

__get( $key ) Получает значение поля по ключу.
$key — название произвольного поля.
Возвращает: значение метаполя __isset( $key ) Определяет установлено ли свойство из таблиц users или usermeta.
Возвращает: true/false __set( $key, $value ) Устанавливает свойство для класса (метаполе). $key — название произвольного поля.
$value — значение произвольного поля.Имейте ввиду, что установка свойства этим методом влияет только на этот класс и не устанавливает их в БД. Для установки в БД используйте wp_update_user() или update_user_meta().
Возвращает: ничего.

Публичные методы

Примеры

#1 Проверим право юзера

Проверим может текущий пользователь редактировать профили других пользователь:

Источник

Пользователи в WordPress

Базовая информация которую нужно знать о пользователях WordPress.

Таблица wp_users

Это поле больше не используется ядром WordPress, которое раньше использовалось в Мультисайтах при перемещении юзера в спам (этот функционал был удален). Подробнее см. функцию: update_user_status().

Колонку можно использовать как-либо в своих целях, но лучше оставить её в покое.

display_name(строка) Отображаемое имя. Если пусто будет как логин. меню

Таблица wp_usermeta

Важные поля

ВАЖНО! Префикс этой опции wp_ должен совпадать с префиксом таблиц БД $wpdb->prefix или $wpdb->get_blog_prefix() для мультисайта.

Так например, если на рабочем сайте изменить префикс таблиц в wp-config.php , то в этой опции вручную также нужно изменить префикс, иначе все пользователи останутся без прав, потому что после смены префикса, например, на wk_ ВП будет искать права в метаполе wk_capabilities .

Какие данные хранятся в таблице метаданных

Также в метаполях хранятся Опции Админ-панели — это настройки страниц адмминки и прочее. Например: сохраненные выборы метабоксов на разных страницах.

meta_key meta_value
admin_color midnight
closedpostboxes_dashboard a:0:<>
metaboxhidden_dashboard a:4:
closedpostboxes_ a:1:
metaboxhidden_ a:3:
meta-box-order_dashboard
meta-box-order_
meta-box-order
wp_media_library_mode Может быть: list или grid. См. upload.php
show_welcome_panel 0
show_admin_bar_front true
wp_user-settings
устарело: wp_usersettings
editor=tinymce&editor_expand=off&libraryContent=browse&dtmenuRight=1&mfold=o&posts_list_mode=list
wp_user-settings-time
устарело: wp_usersettingstime
1604820217
dismissed_wp_pointers Различные заметки которые нужно показать пользователю в админке. Может хранить следующие ключи: theme_editor_notice,wp330_toolbar,wp330_media_uploader,wp330_saving_widgets,wp340_customize_current_theme_link,wp340_choose_image_from_library,wp350_media,wp360_revisions,wp360_locks,wp390_widgets,wp410_dfw,wp496_privacy
_per_page На страницах с WP_List_Table сколько элементов выводить в таблице. Примеры названия опций: edit_post_per_page, users_per_page, edit_comments_per_page, upload_per_page

меню

Роли и права пользователей

User Role Editor — плагин для управления ролями. Редактор ролей пользователей WordPress, плагин позволяет легко изменять роли и возможности пользователей.

По умолчанию в WordPress 6 ролей:

Super Admin Cупер-администратор. Имеет права для управления сетью сайтов. Эта роль появляется только при мультисайт установке.
administrator Aдминистратор сайта (отдельного сайта в сети мультисайт).
editor Редактор. Имеет доступ ко всем постам, страницам, комментариям, категориям, тегам и ссылкам.
author Автор. Может писать, загружать фотографии, редактировать и публиковать свои посты.
contributor Участник. Может писать посты, которые затем публикует редактор или админ.
subscriber Подписчик. Не может ничего, кроме редактирования профиля.

Какую роль получает новый пользователь указывается в Настройки > Общие . Данные сохраняются в опции: users_can_register и default_role :

Список прав по ролям

Список примитивных (фундаментальных) прав пользователя. Это возможности которые по умолчанию есть у указанных ролей (пользователей). Этот список прав задается единожды, при установке WordPress — он сохраняется в таблицу БД wp_options в опцию wp_user_roles .

Право Супер-Админ Админ Редактор Автор Участник Подписчик
read да да да да да да
delete_posts да да да да да
edit_posts да да да да да
delete_published_posts да да да да
edit_published_posts да да да да
publish_posts да да да да
upload_files да да да да
delete_others_pages да да да
delete_others_posts да да да
delete_pages да да да
delete_private_pages да да да
delete_private_posts да да да
delete_published_pages да да да
edit_others_pages да да да
edit_others_posts да да да
edit_pages да да да
edit_private_pages да да да
edit_private_posts да да да
edit_published_pages да да да
manage_categories да да да
manage_links да да да
moderate_comments да да да
publish_pages да да да
read_private_pages да да да
read_private_posts да да да
unfiltered_html да да ¹ да ¹
activate_plugins да да ²
create_users да да ¹
deactivate_plugins да да
delete_plugins да да ¹
delete_themes да да ¹
delete_users да да ¹
edit_dashboard да да
edit_files да да ¹
edit_plugins да да ¹
edit_theme_options да да
edit_themes да да ¹
edit_users да да ¹
export да да
import да да
install_languages да да ¹
install_plugins да да ¹
install_themes да да ¹
list_users да да
manage_options да да
promote_users да да
remove_users да да
switch_themes да да
update_core да да ¹
update_languages да да ¹
update_plugins да да ¹
update_themes да да ¹
manage_network_options да
manage_network_plugins да
manage_network_themes да
manage_network_users да
manage_network да
manage_sites да
setup_network да
upgrade_network да
  • ¹ — когда один сайт (не мультисайт).
  • ² — когда один сайт (не мультисайт). Или включается в настройках сети

Мета права

Выше перечислен список примитивных (фундаментальных) прав. Но есть еще так называемые мета-права. Они нигде не сохраняются, а вычисляются «налету» и в итоге превращаются в примитивное право.

Для проверки таких прав нужно передавать дополнительные параметры, например ID записи для которой нужно проверить может ли пользователь её редактировать. Например:

В этом, случае WP налету проверяет является ли пользователь автором этого поста, или у него есть примитивное право редактировать все посты. В результате, если проверка пройдена, это мета право превращается в аналогичное примитивное право, которое разрешает выполнять действие.

Подробнее о мета правах читайте в описании map_meta_cap().

PHP Функции

Весь список функций смотрите здесь. А вот некоторые из функций:

current_user_can() Проверяет права текущего пользователя, совершать указанное действие.
wp_get_current_user() Получает данные о текущем авторизованном пользователе (объект WP_User). Устанавливает текущего пользователя, если не установлен.
get_current_user_id() Получает ID текущего (авторизованного) пользователя.
is_user_logged_in() Проверяет авторизован ли пользователь (вошел ли пользователь под своим логином). Возвращает true, если пользователь авторизован и false, если нет. Условный тег.
get_userdata() Получает данные указанного пользователя в виде объекта WP_User.
get_user_by() Получает пользователя по указанному полю и значению этого поля (по ID, логину, почте).
get_users() Получает пользователей в соответствии с переданными параметрами.
update_user_meta() Обновляет мета поле указанного пользователя.
get_user_meta() Получает отдельное мета поле или все мета поля указанного пользователя.
delete_user_meta() Удаляет указанные метаданные определенного пользователя.
map_meta_cap() Переводит указанную мета-возможность в примитивную возможность, чтобы потом проверить право доступа пользователя.
wp_insert_user() Создает пользователя WordPress в Базе Данных.
wp_update_user() Обновляет данные пользователя в базе данных. Обновляются обе таблицы wp_usermeta и wp_users .
wp_create_user() Регистрирует нового пользователя. Указываются логин (имя), пароль и email.
register_new_user() Регистрирует нового пользователя. Указываются только логин и email.
wp_login_url() Получает URL страницы входа/авторизации: /wp-login.php
wp_signon() Авторизует пользователя, по указанному логину/email, паролю и параметру remember .
wp_set_password() Изменяет пароль указанного пользователя. Обновляет указанный пароль в БД и сбрасывает кэш пользователя.
wp_check_password() Сравнивает строки паролей: читабельный пароль (обычный) с кодированным паролем (в виде хэша). Нужна для проверки пароля пользователя.
WP_User::add_cap() Добавляет или удаляет право (возможность) у указанного пользователя.

меню

Процесс установки текущего пользователя

Для установки текущего пользователя в ядре на хук determine_current_user повешены следующие функции. Каждая из них устанавливает текущего пользователя для разных видов запроса (фронт, REST запрос).

Хук determine_current_user срабатывают при первом вызове функции wp_get_current_user(), в основе которой лежит функция _wp_get_current_user().

_wp_get_current_user() устанавливает текущего пользователя в глобальную переменную $current_user при первом вызове и при последующих вызовах берет данные от туда.

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

Вообще, её рекомендуется вызывать на хуке init, т.е. после того как ядро и все плагины загружены и их базовый код отработан и следующий шаг это вывод данных на экран.

Источник

Оцените статью