CPT пост не отображает метки и категорию на странице администрирования в бэкэнде.

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

Несколько дней назад я обновил свой WordPress (на локальном хосте) до версии 4.8. После обновления категории и теги для поста CPT, которому назначено ‘hierarchical=> true’ для использования ‘page-attributes’, перестали отображаться в административной панели WordPress, хотя ему назначены соответствующие теги, города и категории.

Так как у нас есть page-attributes, назначенные для CPT, для которого мы установили значение hierarchical как true, то при этом столбцы тегов и категорий отображаются пустыми в административной панели, как показано на изображении ниже.

введите описание изображения здесь

До обновления до версии 4.8 это работало хорошо.

Мы зарегистрировали CPT, используя код ниже.

function register_post_types(){
$singular="Пост";
$plural="Страницы";
register_post_type( 'XXXX', [
'has_archive' => TRUE,
'hierarchical' => true,
'singular_name' => $singular,
'labels' => [
    'name' => 'XXXX'
],
'public' => TRUE,
'supports' => ['editor', 'page-attributes', 'revisions', 'thumbnail', 'title','custom-fields','excerpt'],
'taxonomies' => array('post_tag')
] );
add_image_size( 'YYYY', 650, 650, TRUE );
}
add_action( 'init', __NAMESPACE__.'\register_post_types', 20 );

В приведенном выше коде мы пытались изменить ‘hierarchical’ => false, что показывает данные в следующих столбцах тегов и категорий, но при редактировании отдельного поста параметр page-attributes меняется на post-attributes, что отключает родительский пост.

Например, см. изображение ниже:

введите описание изображения здесь

При установке hierarchiocal=>false мы получаем отображение post-attributes вместо page-attributes и параметр выбора родителя для выбора в отдельном посте не отображается.

Я пробовал множество изменений, чтобы это заработало, но безуспешно!!

Даже при поиске в Google не получил ожидаемых результатов.

Нужно ли мне добавить что-то еще, чтобы это заработало?

Большое спасибо за вашу помощь!!

Вы не зарегистрировали таксономию, вот пример, который я использую

register_taxonomy( 'location', 
        array('business'), /* если вы измените имя register_post_type( 'custom_type', то вам нужно будет изменить это */
        array('hierarchical' => true,     /* если это true, он будет вести себя как категории */             
            'labels' => array(
                'name' => __( 'Локации', 'custom' ), /* имя пользовательской таксономии */
                'singular_name' => __( 'локация', 'custom' ), /* единичное имя таксономии */
                'search_items' =>  __( 'Поиск локаций', 'custom' ), /* заголовок поиска для таксономии */
                'all_items' => __( 'Все Локации', 'custom' ), /* заголовок для всех таксономий */
                'parent_item' => __( 'Родительская Локация ', 'custom' ), /* заголовок родителя для таксономии */
                'parent_item_colon' => __( 'Родительская локация:', 'custom' ), /* заголовок родительской таксономии */
                'edit_item' => __( 'Редактировать Пользовательскую Категорию', 'custom' ), /* заголовок редактирования пользовательской таксономии */
                'update_item' => __( 'Обновить Пользовательскую Категорию', 'custom' ), /* заголовок обновления для таксономии */
                'add_new_item' => __( 'Добавить Новую Пользовательскую Категорию', 'custom' ), /* заголовок добавления новой таксономии */
                'new_item_name' => __( 'Имя Новой Пользовательской Категории', 'custom' ) /* заголовок имени для таксономии */
            ),
            'show_admin_column' => true, 
            'show_ui' => true,
            'query_var' => true,
            'rewrite' => array( 'slug' => 'location' ),
        )
    );   

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

Проблема с отображением тегов и категорий для пользовательского типа записи в WordPress

Введение

С недавним обновлением вашей локальной версии WordPress до версии 4.8 вы заметили, что при использовании пользовательского типа записи (КТР), который имеет заданное значение hierarchical => true, перестали отображаться теги и категории на панели администратора. В данной статье мы рассмотрим возможные причины этой проблемы, а также представим пути её решения.

Контекст проблемы

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

function register_post_types() {
    $singular = "Post";
    $plural = "Pages";
    register_post_type('XXXX', [
        'has_archive' => TRUE,
        'hierarchical' => true,
        'singular_name' => $singular,
        'labels' => [
            'name' => 'XXXX'
        ],
        'public' => TRUE,
        'supports' => ['editor', 'page-attributes', 'revisions', 'thumbnail', 'title', 'custom-fields', 'excerpt'],
        'taxonomies' => array('post_tag')
    ]);
    add_image_size('YYYY', 650, 650, TRUE);
}
add_action('init', __NAMESPACE__.'\register_post_types', 20);

Вы заметили, что, хотя категории и теги установлены для ваших записей, они не отображаются в столбцах в админ-панели. При изменении hierarchical => false вы получаете доступ к полям тегов и категорий, однако в этом случае вы теряете функцию родительских постов, поскольку это переключает на обычные «постовые атрибуты» вместо «атрибутов страницы».

Возможные решения

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

    register_taxonomy('location', 
       array('XXXX'), 
       array('hierarchical' => true,
           'labels' => array(
               'name' => __('Locations', 'custom'),
               'singular_name' => __('location', 'custom'),
               'search_items' => __('Search locations', 'custom'),
               'all_items' => __('All Locations', 'custom'),
               'parent_item' => __('Parent Location', 'custom'),
               'parent_item_colon' => __('Parent location:', 'custom'),
               'edit_item' => __('Edit Custom Category', 'custom'),
               'update_item' => __('Update Custom Category', 'custom'),
               'add_new_item' => __('Add New Custom Category', 'custom'),
               'new_item_name' => __('New Custom Category Name', 'custom')
           ),
           'show_admin_column' => true,
           'show_ui' => true,
           'query_var' => true,
           'rewrite' => array('slug' => 'location'),
       )
    );

    Это гарантирует, что пользовательский тип записи правильно интегрируется с использованием таксономий.

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

  3. Тестирование с отключенными плагинами
    Некоторые плагины могут конфликтовать между собой или с новой версией WordPress. Попробуйте временно отключить все плагины и проверьте, сохраняется ли проблема. После этого включайте плагины по одному, чтобы выявить конфликт.

  4. Переустановка WordPress
    Иногда обновления могут повредить файлы. Рассмотрите возможность переустановки WordPress в вашей локальной среде на случай, если какие-либо файлы были повреждены во время обновления.

Заключение

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

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

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