ACF – Теги не отображаются в пользовательских типах записей

Вопрос или проблема

У меня есть таксономия тегов, и я добавил её в свой пользовательский тип записи (CPT), однако теперь у меня нет возможности добавлять теги в мой CPT. Как сделать это?

Чтобы включить теги для вашего пользовательского типа записи CPT с использованием Advanced Custom Fields ACF, вам нужно убедиться, что вы правильно настроили группу полей, связанную с вашим CPT, чтобы включить поле таксономии для tags

При регистрации вашего пользовательского типа записи, убедитесь, что вы включили поддержку таксономии тегов, установив параметр taxonomies в array('post_tag')

register_post_type('your_custom_post_type', array(
    // Другие параметры
    'taxonomies' => array('post_tag'),
));

Ответ или решение

Совет по решению проблемы отображения меток (тегов) в настраиваемых типах записей (custom post types, CPT) в WordPress, особенно если вы используете плагин Advanced Custom Fields (ACF), потребует от вас разобраться в нескольких аспектах настройки системы и правильного использования таксономий.

Теория

Для начала разберемся в теории. В WordPress, метки и категории по умолчанию относятся к записям типа "post". Однако, когда вы создаете свой собственный тип записи (CPT), вам необходимо явно указать, какие таксономии — если такие имеются — должны поддерживаться вашим новым типом записи. Это делается при регистрации типа записи через функцию register_post_type.

Одним из параметров этой функции является taxonomies, который позволяет вам указать, какие таксономии следует ассигнировать вашему CPT. Чтобы добавить метки или категории, вы должны указать их имя в формате массива, например: array('post_tag') для меток и array('category') для категорий.

Пример

Рассмотрим на примере, как правильно настроить это в коде. Предположим, что вы создаете новый тип записи с именем "product":

function create_product_post_type() {
    register_post_type('product', array(
        'labels' => array(
            'name' => __('Products'),
            'singular_name' => __('Product')
        ),
        'public' => true,
        'has_archive' => true,
        'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'comments'),
        'taxonomies' => array('post_tag'), // Здесь мы указываем поддержку меток
        'rewrite' => array('slug' => 'products'),
    ));
}
add_action('init', 'create_product_post_type');

Обратите внимание на строку taxonomies и убедитесь, что вы добавили array('post_tag'), чтобы ваш тип записи поддерживал метки.

Применение

Теперь перейдем к применению. После успешной регистрации вашего CPT с поддержкой меток, вы можете ожидать, что при создании или редактировании записи вашего типа в админке WordPress, вам будет предложена возможность добавлять метки.

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

  1. Проблемы с кэшированием: Иногда кэш может сохранять старую информацию. Попробуйте сбросить кэш браузера и сайт, использовать приватный режим или очистить кэш сервера.

  2. Проблемы с плагинами: Плагины, особенно ACF, могут иногда конфликтовать. Временно отключите все плагины и проверьте, тут ли будет работать, затем активируйте их поочередно, чтобы выявить возможный конфликт.

  3. Проблемы с темой: Иногда темы могут переопределять стандартные функции WordPress. Активируйте стандартную тему WordPress и проверьте, решает ли это проблему.

  4. Проверка роли пользователя: Убедитесь, что у пользователя, под которым вы вошли, есть необходимые права на редактирование меток.

  5. Перепроверка синтаксиса: Проверьте, нет ли ошибок в синтаксисе функции register_post_type. Убедитесь, что все аргументы правильно указаны.

Более глубокие настройки

Если всё вышеуказанное успешно завершено, и проблема все же сохраняется, вы можете углубиться в использование кода, чтобы напрямую вывести метки через использование их ID или привязать ACF более глубоко:

if(function_exists("register_field_group")) {
    register_field_group(array (
        'id' => 'acf_product_tags',
        'title' => 'Product Tags',
        'fields' => array (
            array (
                'key' => 'field_1',
                'label' => 'Tags',
                'name' => 'tags',
                'type' => 'taxonomy',
                'taxonomy' => 'post_tag',
                'field_type' => 'multi_select',
            ),
        ),
        'location' => array (
            array (
                array (
                    'param' => 'post_type',
                    'operator' => '==',
                    'value' => 'product',
                ),
            ),
        ),
    ));
}

Этот код проверяет наличие функции register_field_group из ACF и регистрирует новое поле в вашем кастомном типе записи, которое будет связано с метками. Это гарантирует, что даже если по каким-то причинам стандартный метод не срабатывает, вы сможете воспользоваться функциональностью меток через кастомное поле благодаря ACF.

Заключение

Когда все шаги выполнены правильно, включая регистрацию CPT с таксономией и настройку ACF, у вас не должно возникнуть проблем с добавлением меток к вашим настраиваемым записям. Важно уделять внимание всем видам возможных ошибок и исключений, и не забывать проверять всё на каждом этапе разработки.

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

Капча загружается...