Функция update_user_meta()
в WordPress используется для обновления значений мета-полей пользователей. Если мета-поля с указанным ключом не существует, функция создаёт его автоматически. Эта функция позволяет добавлять новые параметры или обновлять существующие, которые хранятся в таблице wp_usermeta
(название таблицы может изменяться в зависимости от префикса базы данных).
До версии WordPress 3.0 для этой задачи использовалась функция update_usermeta()
int|bool update_user_meta( int $user_id, string $meta_key, mixed $meta_value, mixed $prev_value = '' )
- $user_id (int) (обязательный): ID пользователя, метаданные которого нужно обновить.
- $meta_key (string) (обязательный): Ключ метаданных, который нужно обновить.
- $meta_value (mixed) (обязательный): Новое значение метаданных.
- $prev_value (mixed) (необязательный): Предыдущее значение метаданных. Если указано, только это значение будет обновлено. По умолчанию пустая строка.
Функция возвращает:
true
– если мета-поле успешно обновлено.false
– если обновление не произошло, например, из-за несуществующего пользователя или совпадения нового значения со старым.- ID мета-поля – если мета-поле не существовало ранее и было создано.
Примеры использования
Рассмотрим несколько примеров использования функции update_user_meta()
для обновления метаданных пользователя.
Пример 1: Обновление мета-поля пользователя
Допустим, мы хотим обновить город проживания пользователя с ID 1. Если поле city
у пользователя не существует, оно будет создано:
$user_id = 1;
update_user_meta( $user_id, 'city', 'Нью-Йорк' );
Для текущего пользователя можно сделать аналогичное обновление с помощью функции get_current_user_id()
:
update_user_meta( get_current_user_id(), 'city', 'Нью-Йорк' );
Пример 2: Работа с параметром $prev_value
Рассмотрим случай, когда у пользователя может быть несколько значений для одного ключа мета-поля. Например, пользователь может иметь несколько записей о городах, которые он посещал:
+---------+----------------------+----------------
| user_id | meta_key | meta_value |
+---------+----------------------+----------------
| 152 | city | Лондон |
| 152 | city | Париж |
| 152 | city | Токио |
Если обновить поле city
следующим образом:
update_user_meta( 152, 'city', 'Москва' );
Все записи с ключом city
будут заменены на Москва
. Чтобы изменить только конкретное значение, используем параметр $prev_value
:
update_user_meta( 152, 'city', 'Москва', 'Лондон' );
Пример 3: Проверка успешности обновления
Чтобы понять, была ли ошибка при обновлении или новое значение совпадает с предыдущим, можно использовать следующий код:
$user_id = 1;
$new_value = 'новое значение';
$updated = update_user_meta( $user_id, 'example_meta_key', $new_value );
if ( false === $updated ) {
// Проверяем, произошло ли совпадение значений или ошибка обновления
if ( $new_value !== get_user_meta( $user_id, 'example_meta_key', true ) ) {
wp_die( 'Ошибка обновления мета-поля! Возможно, ID пользователя некорректен.' );
}
}
Заключение
Функция update_user_meta()
является мощным инструментом для работы с метаданными пользователей в WordPress. Она позволяет легко добавлять новые мета-поля и обновлять существующие, что значительно расширяет возможности управления данными пользователей. Понимание и правильное использование update_user_meta()
помогает эффективно обрабатывать пользовательские данные и создавать более гибкие и мощные решения для вашего сайта.
Эта функция особенно полезна для разработчиков, которые хотят управлять дополнительными данными пользователей, такими как контактная информация, предпочтения и другие параметры, выходящие за рамки стандартных полей профиля.