WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

get_metadata()WP 2.9.0

Получает метаданные указанного объекта (пост, комментарий, пользователь). Кэширует результат.

Это фундаментальная функция метаданных. Параметр $meta_type здесь отвечает за привязку к таблице базы данных, кэшу, хукам, а не к типу поста или чего-то еще. Поэтому для всех типов постов надо указывать post.

Не рекомендуется использовать эту функцию, если вы точно не знаете зачем используете именно её. У этой функции есть все необходимые обертки, в 99% случаев использовать нужно именно их:

Работает на основе: get_metadata_raw(), get_metadata_default(), update_meta_cache()
1 раз — 0.0005281 сек (медленно) | 50000 раз — 0.14 сек (очень быстро) | PHP 7.4.25, WP 6.0

Хуков нет.

Возвращает

Разное.

  • Вернет false, если неправильно переданы $meta_type или $object_id (не-numeric, 0 или отрицательное значение).
  • При $single = true
    • строка/массив — когда метаполе есть.
    • '' — когда метаполя нет.
  • При $single = false
    • массив значений метаполей — когда метаполе есть.
    • array() — когда метаполя нет.

Если в значении метаполя хранится число оно будет возвращено в виде строки, например, "54"...

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

get_metadata( $meta_type, $object_id, $meta_key, $single );
$meta_type(строка) (обязательный)

Тип объекта, метаданные которого нужно получить. Может быть:

  • post - для всех типов постов, таблица wp_postmeta.
  • term - для всех элементов таксономий, таблица wp_termmeta.
  • comment - для всех типов комментариев, таблица wp_commentmeta.
  • user - для юзеров, таблица wp_usermeta.
  • custom_type - своя таблица метаданных.
$object_id(число) (обязательный)
ID типа объекта, указанного в $meta_type, метаданные которого нужно получить. Например, тут пишем ID поста, если тип post.
$meta_key(строка)
Название ключа метаполя. Если не указать этот параметр, будут возвращены все значения всех метаполей объекта.
По умолчанию: ''
$single(логический)

true — вернет значение метаполя в виде строки или массива (если в значении метаполя находится сериализованный массив). При наличии нескольких метаполей с одинаковым ключом, вернется значение первого метаполя.

false — будет возвращен массив со значениями всех метаполей указанного ключа. В этом случае все значения будет строками, даже когда в значении находится сериализованный массив (преобразовывать его в массив нужно будет вручную).

Если в значении произвольного поля находится сериализованный массив, то значение true вернет, нормальный массив, а если указать false, то вернется массив, где в ключе "[0]" будет лежать тот же сериализованный массив.

Этот параметр раотает только если указан параметр $key!

По умолчанию: false

Примеры

0

#1 Вывод метаданных разных типов

Несколько примеров, которыми можно вывести метаданные постов, пользователей и комментариев. Т.е. это альтернативы соответствующих функций ВП: get_post_meta(), get_user_meta(), get_comment_meta().

// получим произвольное поле поста 17, сразу в переменную
$post_meta = get_metadata( 'post', 17, 'robots', true );

// Получим Ник пользователя 14
$user_meta = get_metadata( 'user', 14, 'nickname', 1 );

// Получим все метаданные комментария 115, в виде массива.
$comment_meta = get_metadata( 'comment', 115 );

Заметки

Список изменений

С версии 2.9.0 Введена.

Код get_metadata() WP 6.4.3

function get_metadata( $meta_type, $object_id, $meta_key = '', $single = false ) {
	$value = get_metadata_raw( $meta_type, $object_id, $meta_key, $single );
	if ( ! is_null( $value ) ) {
		return $value;
	}

	return get_metadata_default( $meta_type, $object_id, $meta_key, $single );
}
8 комментариев
    Войти