Функция update_user_meta() в WordPress: параметры, примеры использования, изменения.

Функция 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. Вы можете использовать эти примеры, чтобы легко добавлять и обновлять метаданные пользователей на вашем сайте.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *