Создание и управление метаданными записи

Добавление мета-данных

Добавление мета-данных можно сделать довольно легко с помощью add_post_meta() передав post_id, meta_key, meta_value, и флаг для unique.

meta_key, то как ваш плагин будет ссылаться на мета значение в другом месте кода. Что-то вроде mycrazymetakeyname будет работать, однако, более разумнее использовать префикс, связанный с плагином или именем темы и тогда описание ключа будет более полезным. t1k_featured_menu может быть хорошим. Следует отметить, что тот же самый meta_key может быть использован несколько раз, чтобы сохранить вариации метаданных (см уникальный флаг ниже).

meta_value может быть строка, целое число, или массив. Если это массив, он будет автоматически сериализован перед сохранением в базе данных.

Уникальный флаг ($unique) позволяет объявлять, должен ли этот ключ будет уникальным. Не уникальный ключ может быть чем-то, чего запись имеет кратное количество, например цена. Вы можете иметь несколько вариаций цены в зависимости от размера, например.

С другой стороны, если вы хотите только одну цену для записи, вы могли бы использовать уникальный флаг и meta_key тогда может быть использован только один раз.

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

Если ключ уже существует, и вы хотите обновить его, используйте update_post_meta(). Если вы используете эту функцию и ключ еще НЕ существует, то он будет создан, как если бы вы использовали add_post_meta() без уникального флага.

Подобно add_post_meta(), требуется передать значения post_id, meta_key, meta_value.

Удаление метаданных

delete_post_meta() принимает post_id и meta_key, и опционально meta_value. Он делает именно то, что вы думаете.

Экранирование символов

Мета значения записи передаются через stripslashes() функцию перед хранением, так что вы должны быть осторожны при передаче значений (например, JSON), которые могут включать \ экранированные символы.
Не сохраняйте экранированные значения.

Рассмотрим значение JSON {«ключ»: «значение с \» экранированными кавычками\»»}:

Обход

Добавляя еще один уровень \экранирования с помощью функции wp_slash() (введена в WP 3.6), вы можете компенсировать вызов stripslashes():

Скрытые пользовательские поля

Если вы разработчик плагина или темы, и вы планируете использовать пользовательские поля для хранения параметров, связанных с плагином или шаблоном, то интересно отметить, что WordPress не покажет пользовательские поля, которые имеют ключи, начинающиеся с «_» (подчеркивание) в списке пользовательских полей на экране редактирования записи или при использовании the_meta() функции шаблона. Это может использоваться, например, чтобы показать эти пользовательские поля необычным способом, используя add_meta_box() функцию. Следующий пример:

будет добавлять уникальное пользовательское поле с именем ключа ‘_color‘ и значением ‘red’, но это пользовательское поле не будет отображаться на экране редактирования записи.

Скрытые Массивы

Кроме того, если $meta_value аргумент является массивом, то он не будет отображаться на экране редактирования, даже если вы не задавали префикс имени ключа в виде подчеркивания.

Навигация по разделам:

Оставить комментарий

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