Для начала познакомим читателей с контекстом. Advanced Custom Fields (ACF) — популярный плагин для CMS WordPress, который упрощает создание и управление дополнительными полями (текст, изображения, выбор и т.д.) для записей, страниц, глобальных настроек сайта (Options Page) и других элементов. Подробности доступны на официальном сайте.
Плагин позволяет настраивать отображение полей по условиям, например, для определённых типов записей, рубрик или меток.
ACF также поддерживает «Страницу настроек» (Options Page) для хранения глобальных данных сайта, таких как контакты. Однако для архивных страниц, которых может быть множество, стандартной настройки в плагине нет. Эта задача часто обсуждается, например, на форуме ACF.
Массовое ограничение, с которым столкнулся автор вопроса и другие разработчики, сводится к следующему:
- Архивные страницы — это шаблоны темы, а не контент-сущности, поэтому ACF не может напрямую к ним подключиться.
- «Страница настроек» (Options Page) подходит для глобальных настроек, но неудобна если на ней будут отбражаться настройки для десятка архивных страниц.
Мы решим задачу, добавив «Страницу настроек» для определённого типа записей. Рассмотрим процесс на примере.
Решение
Добавим страницу опций для типа записи «тара» (package), как это было реализовано для клиента, производящего деревянную тару и упаковку. В файле functions.php добавляем следующий код:
// Добавление страницы настроек для кастомного типа записи
if (function_exists('acf_add_options_page')) {
acf_add_options_sub_page(array(
'page_title' => 'Тара / Настройки',
'menu_title' => 'Настройки (тара)',
'parent_slug' => 'edit.php?post_type=package',
));
}
Важно: Если вы добавляете страницы опций для нескольких типов записей, menu_title должен быть уникальным, так как он используется в URL.
После сохранения кода обновите админ-панель WordPress и проверьте, появилась ли вкладка настроек для типа записи «тара».
Если вкладка появилась, создайте необходимые поля в ACF. В настройках отображения полей выберите «Страница с опциями» и укажите вашу страницу (в нашем случае — «Тара»).
Для получения значения поля в шаблоне архива используйте стандартную функцию ACF get_field() с параметром 'options'. Пример:
$test = get_field('your_field_name', 'options');
Таким образом, мы добавили страницу настроек для архивных страниц определённого типа записи и подключили к ним кастомные поля.