Функция update_user_meta() в WordPress
Функция update_user_meta() позволяет обновлять метаданные пользователя, основываясь на его ID. Если метаполе для пользователя не существует, оно будет добавлено.
Параметры функции
$user_id(int) — ID пользователя. Обязательный параметр.$meta_key(string) — Ключ метаданных. Обязательный параметр.$meta_value(mixed) — Значение метаданных. Может быть любого типа, если это что-то сложное, оно должно быть сериализуемым.$prev_value(mixed) — Предыдущее значение, которое нужно проверить перед обновлением. Если указано, обновим только те записи, которые имеют это значение.
По умолчанию: '' (пустая строка).
Как работает функция
Функция возвращает:
- ID метаданных (если ключ не существовал),
true(если обновление прошло успешно),false(если произошла ошибка или значение не изменилось, и уже такое значение существует в базе данных).
Пример использования
Пример 1: Обновление настроения пользователя
Предположим, у пользователя с ID 1 есть метаполе "настроение". Обновим его значение или создадим новую запись, если её нет.
update_user_meta( 1, 'mood', 'good' );
Пример 2: Обновление сайта пользователя
Мы можем обновить URL сайта пользователя по его ID (например, ID 1):
$user_id = 1;
$website = 'http://wordpress.org';
update_user_meta( $user_id, 'user_url', $website );
Пример 3: Проверка ошибок при обновлении
В этом примере показано, как проверить, было ли обновление метаполя успешным.
$user_id = 1;
$new_value = 'good';
// Вернет false, если предыдущее значение равно $new_value.
$updated = update_user_meta( $user_id, 'some_meta_key', $new_value );
if( ! $updated ){
echo 'Поле не было обновлено';
}
// Получаем значение поля и сравниваем его с новым значением $new_value
$val = get_user_meta( $user_id, 'some_meta_key', true );
if( $val !== $new_value ){
echo 'Ошибка: новое значение не записано.';
}
Пример 4: Обновление всех метаполей для совпадающего ключа
update_user_meta() обновит все метаполя с одинаковым ключом, если не указать конкретную запись, которую хотите заменить.
Если у пользователя несколько метаполей с ключом favorite_coffee, и вы хотите изменить название для coffee_id 12, вот как это можно сделать:
$parameters = array(
'coffee_id' => '12',
'title' => 'Вкусный капучино',
'type' => 'espresso',
);
// Получаем все метаполя favorite_coffee пользователя
$previous_favorite_coffee = get_user_meta( $user_id, 'favorite_coffee', false );
if ( empty( $previous_favorite_coffee ) ) {
// Если нет метаданных favorite_coffee, добавляем
add_user_meta( $user_id, 'favorite_coffee', $parameters );
} else {
// Ищем в полученных метаданных запись, которую хотим обновить
$coffee_id = array_search( $parameters['coffee_id'], array_column( $previous_favorite_coffee, 'coffee_id' ) );
if ( false === $coffee_id ) {
// Если метаданные не найдены, добавляем их
add_user_meta( $user_id, 'favorite_coffee', $parameters );
} else {
// Если запись найдена, обновляем её
update_user_meta( $user_id, 'favorite_coffee', $parameters, $previous_favorite_coffee[ $coffee_id ] );
}
}
Изменения в версии
Функция update_user_meta() была представлена в версии 3.0.0 WordPress.
Код функции
Вот как выглядит код функции update_user_meta() в WordPress:
function update_user_meta( $user_id, $meta_key, $meta_value, $prev_value = '' ) {
return update_metadata( 'user', $user_id, $meta_key, $meta_value, $prev_value );
}
Эта функция использует update_metadata(), которая обрабатывает все детали обновления метаданных.
Теперь у вас есть чёткое понимание функции update_user_meta() и её применения в WordPress. Вы можете использовать эти примеры, чтобы легко добавлять и обновлять метаданные пользователей на вашем сайте.