Добавить пользовательское поле на страницу архива?

3 июл. 2017 г., 11:23:38
Просмотры: 13.7K
Голосов: 7

Добавить поля на страницу архива?

Я использую плагин Advanced Custom Fields (но это не принципиально, так как можно использовать и нативные поля WordPress) и хочу добавить пользовательское поле на страницу архива пользовательского типа записи.

Проблема в том, что по умолчанию нет страницы архива, к которой можно прикрепить поле (хотя можно добавить к отдельным категориям, так как они есть в админке).

Создание пользовательского шаблона страницы = нет подсветки в меню

Одно из решений - создать пользовательский шаблон страницы для архивов. Но в этом случае вы теряете возможность подсвечивать его в навигационном меню при просмотре отдельной записи/категории, потому что эта новая страница не будет распознана как родительская.

Правильно ли я понимаю, что нет способа добавить поля на архив и сохранить подсветку в меню?

0
Все ответы на вопрос 1
4

Используя плагин Advanced Custom Fields, вы можете назначить страницы настроек для вашего пользовательского типа записи следующим образом:

if( function_exists('acf_add_options_page') )
{
    acf_add_options_page(array(
        'page_title'    => 'YOUR_PAGE_TILE Options',
        'menu_title'    => 'YOUR_MENU_TITLE Options',
        'menu_slug'     => 'options_YOUR_SLUG',
        'capability'    => 'edit_posts',
        'parent_slug'   => 'edit.php?post_type=YOUR_CUSTOM_POSTTYPE_SLUG',
        'position'      => false,
        'icon_url'      => 'dashicons-images-alt2',
        'redirect'      => false,
    ));
}

Таким образом, вы получаете страницу настроек, к которой позже можно привязать поля. Важно помнить, что все поля, назначенные этой странице настроек, не привязаны к вашему пользовательскому типу записи. Они работают как "обычные" поля настроек, но отображаются в разделе вашего пользовательского типа записи в меню админ-панели WordPress. Для создания страниц настроек, скорее всего, потребуется Pro-версия плагина или установка соответствующего дополнения.

3 июл. 2017 г. 17:12:04
Комментарии

Спасибо. Опция добавляется, но по какой-то причине не отображается на самой странице. Вы получаете значение как обычно с помощью the_field()?

Runnick Runnick
3 июл. 2017 г. 18:02:37

Я работаю с шаблонами Twig, но это должно работать, если сделать так: $options= get_fields('option'); а затем получить значение через echo $options['YOUR_FIELDNAME'];

Luckyfella Luckyfella
3 июл. 2017 г. 18:07:20

На самом деле это the_field('option_name', 'option'), если кому-то интересно.

Runnick Runnick
3 июл. 2017 г. 20:53:21

Оба способа работают. Ваше решение, конечно же, экономит ресурсы. Если у вас сайт с небольшим количеством значений опций, то на мой взгляд, проще присвоить их все массиву. Так вам не придётся постоянно повторять запись the_field(..., 'option').

Luckyfella Luckyfella
3 июл. 2017 г. 21:16:20