update_metadata()

Обновляет метаданные для указанного объекта. Если значение для указанного идентификатора объекта и ключа метаданных уже существует, то метаданные будут обновлены
Функция WordPress
INT 2.9.0
WordPress Icon

Описание функции

Функция update_metadata() используется для обновления метаданных для указанного объекта. Если значение для указанного идентификатора объекта и ключа метаданных не существует, то метаданные будут добавлены.

Функция проверяет, существует ли уже метаданные с указанным ключом для указанного объекта. Если существует и предыдущее значение не указано, то значение метаданных будет обновлено. Если предыдущее значение указано, то значение метаданных будет обновлено только в том случае, если предыдущее значение совпадает с указанным значением.

Функция возвращает идентификатор нового поля метаданных, если поле с указанным ключом не существовало и было добавлено, true в случае успешного обновления, false в случае ошибки или если значение, переданное в функцию, совпадает с уже имеющимся в базе данных.

Использование

update_metadata( string $meta_type, int $object_id, string $meta_key, mixed $meta_value, mixed $prev_value = '' ): int|bool

Функция update_metadata() принимает следующие параметры:

  • $meta_type (string) — Тип объекта, для которого предназначены метаданные. Принимает значения ‘post’, ‘comment’, ‘term’, ‘user’ или любой другой тип объекта с соответствующей таблицей метаданных.
  • $object_id (int) — Идентификатор объекта, для которого предназначены метаданные.
  • $meta_key (string) — Ключ метаданных.
  • $meta_value (mixed) — Значение метаданных. Должно быть сериализуемым, если не является скалярным.
  • $prev_value (mixed) — Предыдущее значение для проверки перед обновлением. Если указано, то будут обновлены только существующие записи метаданных с этим значением. В противном случае будут обновлены все записи. По умолчанию: ».

Функция возвращает идентификатор нового поля метаданных, если поле с указанным ключом не существовало и было добавлено, true в случае успешного обновления, false в случае ошибки или если значение, переданное в функцию, совпадает с уже имеющимся в базе данных.


// Обновление метаданных для поста с ID 123
$post_id = 123;
$meta_key = 'my_custom_field';
$meta_value = 'New value';
// Предыдущее значение не указано, обновляем все записи метаданных с указанным ключом
$result = update_metadata( 'post', $post_id, $meta_key, $meta_value );
if ( $result === false ) {
    // Обработка ошибки
} elseif ( $result === true ) {
    // Метаданные успешно обновлены
} else {
    // Новое поле метаданных было добавлено, $result содержит его идентификатор
}

Примеры использования

Обновление метаданных поста


$meta_type = 'post';
$object_id = 123;
$meta_key = 'my_meta_key';
$meta_value = 'new_meta_value';
$prev_value = 'old_meta_value';
$result = update_metadata( $meta_type, $object_id, $meta_key, $meta_value, $prev_value );
if ( $result === true ) {
    echo 'Метаданные поста успешно обновлены.';
} elseif ( $result === false ) {
    echo 'Не удалось обновить метаданные поста.';
} elseif ( is_int( $result ) ) {
    echo 'Метаданные поста успешно добавлены с ID: ' . $result;
}

Изменение метаданных комментария


$meta_type = 'comment';
$object_id = 456;
$meta_key = 'my_meta_key';
$meta_value = 'new_meta_value';
$prev_value = 'old_meta_value';
$result = update_metadata( $meta_type, $object_id, $meta_key, $meta_value, $prev_value );
if ( $result === true ) {
    echo 'Метаданные комментария успешно обновлены.';
} elseif ( $result === false ) {
    echo 'Не удалось обновить метаданные комментария.';
} elseif ( is_int( $result ) ) {
    echo 'Метаданные комментария успешно добавлены с ID: ' . $result;
}

Обновление метаданных термина


$meta_type = 'term';
$object_id = 789;
$meta_key = 'my_meta_key';
$meta_value = 'new_meta_value';
$prev_value = 'old_meta_value';
$result = update_metadata( $meta_type, $object_id, $meta_key, $meta_value, $prev_value );
if ( $result === true ) {
    echo 'Метаданные термина успешно обновлены.';
} elseif ( $result === false ) {
    echo 'Не удалось обновить метаданные термина.';
} elseif ( is_int( $result ) ) {
    echo 'Метаданные термина успешно добавлены с ID: ' . $result;
}

Изменение метаданных пользователя


$meta_type = 'user';
$object_id = 987;
$meta_key = 'my_meta_key';
$meta_value = 'new_meta_value';
$prev_value = 'old_meta_value';
$result = update_metadata( $meta_type, $object_id, $meta_key, $meta_value, $prev_value );
if ( $result === true ) {
    echo 'Метаданные пользователя успешно обновлены.';
} elseif ( $result === false ) {
    echo 'Не удалось обновить метаданные пользователя.';
} elseif ( is_int( $result ) ) {
    echo 'Метаданные пользователя успешно добавлены с ID: ' . $result;
}

Вопросы и ответы

Как добавить новое метаданные для объекта?

Для добавления нового метаданных для объекта в WordPress используется функция update_metadata(). Она принимает следующие параметры:

  • $meta_type — тип объекта, для которого предназначены метаданные. Может принимать значения ‘post’, ‘comment’, ‘term’, ‘user’ или любой другой тип объекта с соответствующей таблицей метаданных.
  • $object_id — ID объекта, для которого предназначены метаданные.
  • $meta_key — ключ метаданных.
  • $meta_value — значение метаданных. Должно быть сериализуемым, если не является скалярным типом данных.
  • $prev_value (опционально) — предыдущее значение метаданных, которое нужно проверить перед обновлением. Если указано, будут обновлены только существующие записи метаданных с этим значением. По умолчанию: ».

Функция возвращает новый ID метаданных, если поле с указанным ключом не существовало и было добавлено, true в случае успешного обновления, false в случае ошибки или если переданное значение уже присутствует в базе данных.

Пример использования функции update_metadata() для добавления нового метаданных:


$meta_type = 'post';
$object_id = 123;
$meta_key = 'my_meta_key';
$meta_value = 'my_meta_value';
$result = update_metadata( $meta_type, $object_id, $meta_key, $meta_value );
if ( $result ) {
  echo 'Метаданные успешно добавлены.';
} else {
  echo 'Ошибка при добавлении метаданных.';
}

Как обновить значение существующего метаданных для объекта?

Для обновления значения существующего метаданных для объекта в WordPress также используется функция update_metadata(). Она принимает те же параметры, что и для добавления нового метаданных.

Пример использования функции update_metadata() для обновления значения существующего метаданных:


$meta_type = 'post';
$object_id = 123;
$meta_key = 'my_meta_key';
$meta_value = 'new_meta_value';
$prev_value = 'old_meta_value';
$result = update_metadata( $meta_type, $object_id, $meta_key, $meta_value, $prev_value );
if ( $result ) {
  echo 'Значение метаданных успешно обновлено.';
} else {
  echo 'Ошибка при обновлении значения метаданных или предыдущее значение не совпадает.';
}

Как удалить метаданные для объекта?

Для удаления метаданных для объекта в WordPress используется функция delete_metadata(). Она принимает следующие параметры:

  • $meta_type — тип объекта, для которого предназначены метаданные.
  • $object_id — ID объекта, для которого предназначены метаданные.
  • $meta_key — ключ метаданных.
  • $meta_value (опционально) — значение метаданных. Если указано, будут удалены только записи метаданных с этим значением. По умолчанию: ».

Функция возвращает количество удаленных записей метаданных или false в случае ошибки.

Пример использования функции delete_metadata() для удаления метаданных:


$meta_type = 'post';
$object_id = 123;
$meta_key = 'my_meta_key';
$result = delete_metadata( $meta_type, $object_id, $meta_key );
if ( $result ) {
  echo 'Метаданные успешно удалены.';
} else {
  echo 'Ошибка при удалении метаданных.';
}

Как проверить существование метаданных для объекта?

Для проверки существования метаданных для объекта в WordPress можно использовать функцию metadata_exists(). Она принимает два параметра — тип объекта и идентификатор объекта. Функция возвращает true, если метаданные существуют, и false, если метаданные отсутствуют.


$object_id = 123;
$meta_key = 'my_meta_key';
$meta_type = 'post';
if (metadata_exists($meta_type, $object_id, $meta_key)) {
    echo 'Метаданные существуют';
} else {
    echo 'Метаданные отсутствуют';
}

Как обновить только определенное значение метаданных для объекта?

Для обновления только определенного значения метаданных для объекта в WordPress используется функция update_metadata(). Она принимает пять параметров — тип объекта, идентификатор объекта, ключ метаданных, новое значение метаданных и предыдущее значение метаданных (необязательно).


$object_id = 123;
$meta_key = 'my_meta_key';
$meta_value = 'new_meta_value';
$prev_value = 'old_meta_value';
$meta_type = 'post';
$result = update_metadata($meta_type, $object_id, $meta_key, $meta_value, $prev_value);
if ($result === true) {
    echo 'Метаданные успешно обновлены';
} elseif ($result === false) {
    echo 'Ошибка при обновлении метаданных';
} else {
    echo 'Метаданные добавлены с новым ключом: ' . $result;
}

Как получить все метаданные для объекта?

Для получения всех метаданных для объекта в WordPress используется функция get_metadata(). Она принимает три параметра — тип объекта, идентификатор объекта и ключ метаданных. Функция возвращает массив со всеми значениями метаданных для указанного объекта и ключа.


$object_id = 123;
$meta_key = 'my_meta_key';
$meta_type = 'post';
$metadata = get_metadata($meta_type, $object_id, $meta_key);
if (!empty($metadata)) {
    foreach ($metadata as $value) {
        echo $value . '<br>';
    }
} else {
    echo 'Метаданные отсутствуют';
}

Как обновить метаданные только если предыдущее значение соответствует определенному значению?

Для обновления метаданных только в том случае, если предыдущее значение соответствует определенному значению, можно использовать функцию update_metadata() с указанием параметра $prev_value. Этот параметр позволяет проверить предыдущее значение перед обновлением.

Пример кода:


$object_id = 123;
$meta_key = 'my_meta_key';
$meta_value = 'new_meta_value';
$prev_value = 'old_meta_value';
$result = update_metadata( 'post', $object_id, $meta_key, $meta_value, $prev_value );
if ( $result === false ) {
    echo 'Ошибка при обновлении метаданных.';
} elseif ( $result === true ) {
    echo 'Метаданные успешно обновлены.';
} elseif ( is_int( $result ) ) {
    echo 'Метаданные успешно добавлены с ID: ' . $result;
}

Как обновить метаданные только если предыдущее значение не соответствует определенному значению?

Если требуется обновить метаданные только в том случае, если предыдущее значение не соответствует определенному значению, можно использовать функцию update_metadata() без указания параметра $prev_value. В этом случае будут обновлены все записи метаданных.

Пример кода:


$object_id = 123;
$meta_key = 'my_meta_key';
$meta_value = 'new_meta_value';
$result = update_metadata( 'post', $object_id, $meta_key, $meta_value );
if ( $result === false ) {
    echo 'Ошибка при обновлении метаданных.';
} elseif ( $result === true ) {
    echo 'Метаданные успешно обновлены.';
} elseif ( is_int( $result ) ) {
    echo 'Метаданные успешно добавлены с ID: ' . $result;
}

Как обновить метаданные только если они уже существуют для объекта?

Если необходимо обновить метаданные только в том случае, если они уже существуют для объекта, можно использовать функцию update_metadata() с указанием параметра $prev_value в виде пустой строки.

Пример кода:


$object_id = 123;
$meta_key = 'my_meta_key';
$meta_value = 'new_meta_value';
$prev_value = '';
$result = update_metadata( 'post', $object_id, $meta_key, $meta_value, $prev_value );
if ( $result === false ) {
    echo 'Ошибка при обновлении метаданных.';
} elseif ( $result === true ) {
    echo 'Метаданные успешно обновлены.';
} elseif ( is_int( $result ) ) {
    echo 'Метаданные успешно добавлены с ID: ' . $result;
}

Функция update_metadata() в WordPress позволяет обновлять метаданные для указанного объекта. Она возвращает новый идентификатор метаданных, если поле с указанным ключом не существовало и было добавлено, true в случае успешного обновления и false в случае ошибки или если переданное значение равно уже существующему в базе данных.

Связанные элементы

  • Функция add_metadata(): Добавляет новую метаданные для указанного объекта.
  • Функция delete_metadata(): Удаляет метаданные для указанного объекта.
  • Функция get_metadata(): Возвращает значение метаданных для указанного объекта и ключа метаданных.
  • Функция update_metadata_by_mid(): Обновляет метаданные для указанного объекта по идентификатору метаданных.
Обсуждение