get_metadata()
Получает метаданные указанного объекта (пост, комментарий, пользователь). Кэширует результат.
Это фундаментальная функция метаданных. Параметр $meta_type здесь отвечает за привязку к таблице базы данных, кэшу, хукам, а не к типу поста или чего-то еще. Поэтому для всех типов постов надо указывать post
.
Не рекомендуется использовать эту функцию, если вы точно не знаете зачем используете именно её. У этой функции есть все необходимые обертки, в 99% случаев использовать нужно именно их:
Хуков нет.
Возвращает
Разное
.
- Вернет
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
Примеры
#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 );
Заметки
- Смотрите: get_metadata_raw()
- Смотрите: get_metadata_default()
Список изменений
С версии 2.9.0 | Введена. |
Код get_metadata() get metadata WP 6.7.2
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 ); }