Вопрос или проблема
Несколько дней назад я обновил свой 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
вы получаете доступ к полям тегов и категорий, однако в этом случае вы теряете функцию родительских постов, поскольку это переключает на обычные «постовые атрибуты» вместо «атрибутов страницы».
Возможные решения
-
Проверка регистрации таксономий
Убедитесь, что все необходимые таксономии правильно зарегистрированы. Например, вы можете использовать следующий код для регистрации таксономии: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'), ) );
Это гарантирует, что пользовательский тип записи правильно интегрируется с использованием таксономий.
-
Обновление кода и переопределение параметров
Проверьте, правильно ли указаны параметры в коде. Ошибка в параметрах может привести к проблемам отображения. Возможно, стоит изменить порядок регистрации таксономий и пользовательских типов записей. -
Тестирование с отключенными плагинами
Некоторые плагины могут конфликтовать между собой или с новой версией WordPress. Попробуйте временно отключить все плагины и проверьте, сохраняется ли проблема. После этого включайте плагины по одному, чтобы выявить конфликт. -
Переустановка WordPress
Иногда обновления могут повредить файлы. Рассмотрите возможность переустановки WordPress в вашей локальной среде на случай, если какие-либо файлы были повреждены во время обновления.
Заключение
Проблема с отсутствующими тегами и категориями для пользовательского типа записи часто связана с некорректной регистрацией таксономий или конфликтами с настройками WordPress. Примечания по коду, приведенные выше, помогут вам восстановить функциональность и обеспечить корректное отображение всех необходимых полей в админ-панели. Если после всех этих шагов проблема всё равно сохраняется, рекомендуется обратиться к документации WordPress либо сообществу для получения дополнительной поддержки.