Произвольные данные публикаций в WordPress

В WordPress есть механизм, который позволяет добавить произвольные данные для определённой записи. Этот механизм представляет собой набор функций для добавления, изменения и удаления метаданных. Перечислим их:
  • add_post_meta - добавляет данные
  • get_post_meta - возвращает данные из поля
  • update_post_meta - обновляет данные в поле
  • delete_post_meta - удаляет поле
Далее эти функции будут рассмотрены по порядку.

Добавить данные в поле - add_post_meta

Функция добавления данных произвольного поля "add_post_meta" всегда добавляет данные только для записей, а не для ривизий. Если в её аргументах указать ID ривизии, то функция всё равно найдёт родительскую публикацию и добавит данные именно к ней. Функция возвращает "true" в случае успешного добавления поля и "false", если поле не удалось добавить:
add_post_meta( $post_id, $key, $value, $unique );
Название Тип данных Описание
$post_id число ID поста.
$key строка Название произвольного поля (латиницей). Если название начинается с символа подчёркивания "_", то поле будет видно только администратору (не видно простым пользователям).
$value строка Значение поля
$unique логический Ключ должен быть уникальным. По умолчанию: "false" - можно создать несколько полей с одинаковым ключом
Примеры использования:
<?php
add_post_meta(
   7, // id записи
   '_food', // название поля
   'cheese', // значение поля
   true // название поля должно быть уникальным
);

Получение данных из поля - get_post_meta

Для получения значения поля можно использовать функцию "get_post_meta". Если в поле содержится сериализованный массив (PHP функцией "serialize"), то он будет обработан функцией для распаковки данных - "unserialize". Функция возвращает либо строку (даже если записывалось число), либо массив:
$val = get_post_meta( $post_id, $key, $single );
Название Тип данных Описание
$post_id число ID поста.
$key строка Название произвольного поля (латиницей). Если оставить пустым, то вернутся значения всех произвольных полей.
$single логический В положении "false" (по умолчанию) вернёт массив из всех значений полей (используйте, если полей с таким ключом несколько). В положении "true" вернёт только одно первое полученное значение из поля, даже если полей с таким ключом несколько.
Примеры использования:
<?php
$food = get_post_meta(
   7, // id записи
   '_food', // название поля
   true
);
echo $food; // распечатает "cheese"

Обновление значения поля - update_post_meta

Для изменения значения поля используется функция "update_post_meta". Перед внесением изменений эта функция проверяет поле на существование и добавляет его. Фактически её можно использовать вместо функции добавления данных "add_post_meta".

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

Как и в случае с "add_post_meta" функция "update_post_meta" проверяет является ли запись ревизией. И в случае таковой функция автоматически находит родительскую запись и изменяет значение поля именно у неё.

Рассмотрим аргументы этой функции:
update_post_meta( $post_id, $key, $value, $prev_value );
Название Тип данных Описание
$post_id число ID поста.
$key строка Название произвольного поля (латиницей).
$value строка/массив Значение поля. Если передать массив, то он будет сериализован PHP функцией "serialize".
$prev_value строка/массив Текущее значение поля, которое собираемся изменить. Нужно на случай, если есть несколько произвольных полей с одинаковым названием, чтобы изменить именно одно. Иначе будут изменены все значения полей с одинаковым названием.
Примеры использования:
<?php
update_post_meta(
   7, // id записи
   '_food', // название поля
   'milk' // новое значение поля
);

Удаление поля - delete_post_meta

Для удаления поля используйте функцию "delete_post_meta". При успешном удалении вернётся "true", иначе "false":
delete_post_meta( $post_id, $key, $value );
Рассмотрим аргументы этой функции:
Название Тип данных Описание
$post_id число ID поста.
$key строка Название произвольного поля (латиницей), которое необходимо удалить.
$value строка Значение поля, которое нужно удалить. Используйте это на тот случай, если есть несколько произвольных полей с одинаковым названием, чтобы удалить именно одно. Иначе будут удалены все поля с одинаковым названием.
Примеры использования:
<?php
delete_post_meta(
   7, // id записи
   '_food' // название поля
);
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: