- get_userdata() WP 0.71
- Возвращает
- Использование
- Примеры
- #1 Как выводить данные из полученного объекта данных
- #1.2 Данные в переменную
- #2 Методы класса
- WP_User_Query
- Правильное использование класса
- Параметры класса WP_User_Query
- Параметры вывода либо исключения из вывода конкретных пользователей
- Параметры поиска пользователей
- Параметры количества пользователей
- Сортировка пользователей
- Метаданные пользователей
- Сами задаем необходимые возвращаемые значения
- Методы и свойства класса WP_User_Query
- Свойства
- Методы
- Параметры объекта пользователя WP_User
- Смотрите также
- WP_User<> WP 2.7.0
- Возвращает 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
- Возвращает
- Использование
- Свойства класса
- Магические методы
- Публичные методы
- Примеры
- #1 Проверим право юзера
- Пользователи в WordPress
- Таблица wp_users
- Таблица wp_usermeta
- Важные поля
- Какие данные хранятся в таблице метаданных
- Роли и права пользователей
- Список прав по ролям
- Мета права
- PHP Функции
- Процесс установки текущего пользователя
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 |
На страницах с 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, т.е. после того как ядро и все плагины загружены и их базовый код отработан и следующий шаг это вывод данных на экран.
Источник