В прошлой статье "
Произвольные данные записей в WordPress" был рассмотрен способ добавления и управления дополнительными полями для записей в WordPress. Но аналогичный механизм есть и для учётных записей пользователей. То есть можно добавить произвольное поле с данными для пользователя. Для совершения действия над такими полями и данными в них существует набор функций:
- add_user_meta - добавляет данные
- get_user_meta - возвращает данные из поля
- update_user_meta - обновляет данные в поле
- delete_user_meta - удаляет поле
Произвольные данные пользователей хранятся в таблице "wp_usermeta". К примеру, в этой таблице можно найти имя пользователя "first_name", фамилию "last_name", псевдоним "nickname".
Далее эти функции будут рассмотрены по порядку.
Добавить данные в поле - add_user_meta
Функция добавления данных произволььного поля "add_user_meta" всегда добавляет данные только для пользователей. Функция возвращает id добавленного ключа в случае успешного добавления и "false", если поле не удалось добавить:
add_user_meta( $user_id, $key, $value, $unique );
Название |
Тип данных |
Описание |
$user_id |
число |
ID пользователя. |
$key |
строка |
Название произвольного поля (латиницей). Если название начинается с символа подчёркивания "_", то поле будет видно только администратору (не видно простым пользователям). |
$value |
строка/ массив/ число/ объект/ логический |
Значение поля |
$unique |
логический |
Ключ должен быть уникальным. По умолчанию: "false" - можно создать несколько полей с одинаковым ключом |
Примеры использования:
<?php
add_user_meta(
7, // id пользователя
'food', // название поля
'cheese', // значение поля
true // название поля должно быть уникальным
);
Получение данных из поля - get_user_meta
Для получения значения поля можно использовать функцию "get_user_meta". Если в поле содержится сериализованный массив (PHP функцией "serialize"), то он будет обработан функцией для распаковки данных - "unserialize". Функция возвращает либо строку (даже если записывалось число), либо массив:
$val = get_user_meta( $user_id, $key, $single );
Название |
Тип данных |
Описание |
$user_id |
число |
ID пользователя. |
$key |
строка |
Название произвольного поля (латиницей). Если оставить пустым, то вернутся значения всех произвольных полей. |
$single |
логический |
В положении "false" (по умолчанию) вернёт массив из всех значений полей (используйте, если полей с таким ключом несколько). В положении "true" вернёт только одно первое полученное значение из поля, даже если полей с таким ключом несколько. |
Примеры использования:
<?php
$food = get_user_meta(
7, // id пользователя
'food', // название поля
true
);
echo $food; // распечатает "cheese"
Обновление значения поля - update_user_meta
Для изменения значения поля используется функция "update_user_meta". Перед внесением изменений эта функция проверяет поле на существование и добавляет его. Фактически её можно использовать вместо функции добавления данных "add_user_meta".
Функция возвращает "false" в случае неудачи, "true" в случае успешного обновления поля и ID нового поля, если оно было создано.
Рассмотрим аргументы этой функции:
update_user_meta( $user_id, $key, $value, $prev_value );
Название |
Тип данных |
Описание |
$user_id |
число |
ID пользователя. |
$key |
строка |
Название произвольного поля (латиницей). |
$value |
строка/массив |
Значение поля. Если передать массив, то он будет сериализован PHP функцией "serialize". |
$prev_value |
строка/массив |
Текущее значение поля, которое собираемся изменить. Нужно на случай, если есть несколько произвольных полей с одинаковым названием, чтобы изменить именно одно. Иначе будут изменены все значения полей с одинаковым названием. |
Примеры использования:
<?php
update_user_meta(
7, // id пользователя
'food', // название поля
'milk' // новое значение поля
);
Удаление поля - delete_user_meta
Для удаления поля используйте функцию "delete_user_meta". При успешном удалении вернётся "true", иначе "false":
delete_user_meta( $user_id, $key, $value );
Рассмотрим аргументы этой функции:
Название |
Тип данных |
Описание |
$user_id |
число |
ID пользователя. |
$key |
строка |
Название произвольного поля (латиницей), которое необходимо удалить. |
$value |
строка |
Значение поля, которое нужно удалить. Используйте это на тот случай, если есть несколько произвольных полей с одинаковым названием, чтобы удалить именно одно. Иначе будут удалены все поля с одинаковым названием. |
Примеры использования:
<?php
delete_user_meta(
7, // id пользователя
'food' // название поля
);