Данные пользовательского типа записи


Иногда стандартных полей произвольного типа записи может быть недостаточно, и вам потребуется хранить дополнительные данные в произвольном типе записи.

К счастью, WordPress поддерживает так называемые метаданные записи, которые позволяют хранить дополнительную информацию о записи.

Давайте рассмотрим, как можно использовать метаданные записи в записи или произвольном типе записи.

Что такое метаданные записи

Метаданные записи — это способ хранения дополнительной информации о записи в базе данных WordPress.

Метаданные записи хранятся в таблице postmeta в виде пар «ключ-значение». Если вы посмотрите на таблицу postmeta в базе данных WordPress, то увидите, что в ней есть четыре столбца: meta_id, post_id, meta_key и meta_value.

post_id — это идентификатор записи, с которой связаны метаданные. meta_key — это имя поля метаданных, а meta_value — его значение.

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

Вы можете добавить метаданные записи с помощью функции add_post_meta. Эта функция принимает три параметра: идентификатор записи, имя метаданных и значение метаданных.

Предположим, вы хотите добавить в запись поле метаданных с идентификатором 1 и сохранить в нём место, где была написана запись, — London.

Можно использовать следующий код:

    add_post_meta( 1, 'location', 'London' );

Существуют и другие функции для работы с метаданными записи, такие как update_post_meta, delete_post_meta и get_post_meta.

Подробнее об этих функциях и их использовании в плагинах можно узнать на странице «Метаданные» в руководстве разработчика плагинов.

Панель «Произвольные поля»

Добавление метаданных записи с помощью кода — это один из способов, но также можно предоставить администраторам сайта возможность добавлять метаданные через интерфейс администрирования WordPress.

Один из способов сделать это — использовать панель «Произвольные поля» для типа записи.

Чтобы включить панель «Произвольные поля», сначала необходимо убедиться, что ваш произвольный тип записи поддерживает метаданные.

Для этого нужно добавить или обновить аргумент supports, включив поддержку custom-fields.

Затем при редактировании произвольного типа записи нажмите значок параметров редактора, выберите «Настройки», нажмите «Панели» и включите переключатель «Произвольные поля».

После этого редактор обновится, и в нижней части экрана вы увидите панель «Произвольные поля».

Здесь можно добавить новое произвольное поле и указать его имя и значение.

Например, если вы хотите добавить номер ISBN книги, можно создать новое произвольное поле с именем isbn и значением номера ISBN.

Эта панель использует функцию add_post_meta для добавления метаданных в запись.

Предварительно заданные имена полей для панели «Произвольные поля»

Также можно заполнить поле «Имя» в панели «Произвольные поля» списком заранее определённых полей метаданных.

Для этого нужно подключиться к фильтру postmeta_form_keys и добавить имена полей метаданных, которые вы хотите отображать в панели «Произвольные поля».

Фильтр postmeta_form_keys срабатывает перед отрисовкой HTML панели «Произвольные поля» и передаёт два параметра: массив ключей метаданных и объект записи.

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

Таким образом, обновив массив ключей метаданных, можно добавить ключи полей метаданных в панель «Произвольные поля», чтобы пользователям было проще добавлять правильные метаданные.

Вот пример того, как это можно сделать:

add_filter( 'postmeta_form_keys', 'bookstore_add_isbn_to_quick_edit', 10, 2 );
function bookstore_add_isbn_to_quick_edit( $keys, $post ) {
    if ( $post->post_type === 'book' ) {
        $keys[] = 'isbn';
    }
    return $keys;
}

Вы регистрируете функцию обратного вызова в фильтре postmeta_form_keys и указываете 2 принимаемых аргумента, чтобы получить оба аргумента фильтра.

Затем проверьте, является ли тип записи книгой, и, если это так, добавьте параметр isbn в массив $keys, а затем верните этот массив.

Если тип записи — book, в панель «Произвольные поля» будет добавлено поле метаданных isbn.

Если вы создадите или отредактируете книгу при включённой панели «Произвольные поля», то увидите доступное поле isbn для добавления метаданных в запись.

Произвольные метабоксы

Ещё один способ предоставить администраторам сайта возможность добавлять метаданные записи — использовать произвольные метабоксы.

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

О том, как работать с метабоксами, вы узнаете в учебном курсе для разработчиков плагинов.