WordPress. Метаданные

Метаданные — это информация об информации. В случае WordPress это информация, связанная с сообщениями, пользователями, комментариями и терминами.

Учитывая отношение метаданных «многие к одному» в WordPress, ваши возможности практически безграничны. У вас может быть столько мета-параметров, сколько вы пожелаете, и вы можете хранить там что угодно.

В этой главе мы обсудим управление метаданными постов , создание пользовательских метабоксов и рендеринг метаданных постов .

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

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

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

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

Флаг unique позволяет вам объявить, должен ли этот ключ быть уникальным. Неуникальный ключ — означает, что запись может иметь несколько вариаций, например несколько цен.
Если вам нужна только одна цена для записи (товара услуги), вы должны отметить ее как unique, и её meta_key будет иметь только одно значение.

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

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

Подобно add_post_meta() , функция принимает post_id, meta_key и meta_value. Он также принимает необязательный параметр prev_value, который, если он указан, заставит функцию обновлять только существующие записи метаданных с этим значением. Если он не указан, функция по умолчанию обновляет все записи.

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

delete_post_meta() принимает post_id и meta_key и, необязательный meta_value. Удаляет метаинформацию для указанной записи.

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

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

Рассмотрим значение JSON {“key”:”value with \”escaped quotes\””}:

$escaped_json = '{"key":"value with \"escaped quotes\""}';
update_post_meta( $id, 'escaped_json', $escaped_json );
$broken = get_post_meta( $id, 'escaped_json', true );
/*
$broken, after stripslashes(), ends up unparsable:
{"key":"value with "escaped quotes""}
*/

Обходной путь

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

$escaped_json = '{"key":"value with \"escaped quotes\""}';
update_post_meta( $id, 'double_escaped_json', wp_slash( $escaped_json ) );
$fixed = get_post_meta( $id, 'double_escaped_json', true );
/*
$fixed, after stripslashes(), ends up as desired:
{"key":"value with \"escaped quotes\""}
*/

Скрытые настраиваемые поля

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

Это может быть полезно для отображения этих настраиваемых полей необычным способом с помощью функции add_meta_box() .

В приведенном ниже примере будет добавлено уникальное настраиваемое поле meta_key с именем «_color» и meta_value «красный», но это настраиваемое поле не будет отображаться на экране редактирования сообщения:
add_post_meta( 68, ‘_color’, ‘red’, true );

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

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

Добавить комментарий

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