Почему не отображается фильтр по категориях для post_type?

Ссылка скопирована
1 ответ

Всем привет!

Создаю свою таксономию

function register_custom_taxonomy(){  	register_taxonomy('topicality', array('masterclass'), array( 		'hierarchical'  => true, 		'labels'        => array( 			'name'              => _x( 'Актуальність', 'taxonomy general name' ), 			'singular_name'     => _x( 'Актуальність', 'taxonomy singular name' ), 			'search_items'      =>  __( 'Пошук' ), 			'all_items'         => __( 'Всі' ), 			'parent_item'       => __( 'Батькіська актуальність' ), 			'parent_item_colon' => __( 'Батькіська актуальність:' ), 			'edit_item'         => __( 'Редагувати' ), 			'update_item'       => __( 'Оновити' ), 			'add_new_item'      => __( 'Додати нову' ), 			'new_item_name'     => __( 'Нова' ), 			'menu_name'         => __( 'Актуальність' ), 		),     'public'        => true, 		'show_ui'       => true, 		'query_var'     => true, 	)); }

function register_custom_taxonomy(){ register_taxonomy('topicality', array('masterclass'), array( 'hierarchical' => true, 'labels' => array( 'name' => _x( 'Актуальність', 'taxonomy general name' ), 'singular_name' => _x( 'Актуальність', 'taxonomy singular name' ), 'search_items' => __( 'Пошук' ), 'all_items' => __( 'Всі' ), 'parent_item' => __( 'Батькіська актуальність' ), 'parent_item_colon' => __( 'Батькіська актуальність:' ), 'edit_item' => __( 'Редагувати' ), 'update_item' => __( 'Оновити' ), 'add_new_item' => __( 'Додати нову' ), 'new_item_name' => __( 'Нова' ), 'menu_name' => __( 'Актуальність' ), ), 'public' => true, 'show_ui' => true, 'query_var' => true, )); }

и свой тип записей

function register_post_types(){  	register_post_type( 'masterclass', [ 		'label'  => null, 		'labels' => [ 			'name'               => 'Майстер-класи', 			'singular_name'      => 'Майстер-клас',  			'add_new'            => 'Додати майстер-клас',  			'add_new_item'       => 'Додавання майстер-класу',  			'edit_item'          => 'Редагувати майстер-класу', 			'new_item'           => 'Новий майстер-клас',  			'view_item'          => 'Дивитися майстер-клас', 			'search_items'       => 'Шукати майстер-клас', 			'not_found'          => 'Не знайдено майстер-класу', 			'not_found_in_trash' => 'Не знайдено в корзині', 			'parent_item_colon'  => '', 			'menu_name'          => 'Майстер-класи', 		], 		'description'         => 'Майстер-клас', 		'public'              => true, 		'publicly_queryable'  => false, 		'exclude_from_search' => true, 		'show_ui'             => true, 		'show_in_nav_menus'   => true, 		'show_in_menu'        => true,  		'show_in_admin_bar'   => true, 		'show_in_rest'        => true, 		'rest_base'           => null, 		'menu_position'       => 4, 		'menu_icon'           => 'dashicons-star-filled', 		'hierarchical'        => false, 		'supports'            => [ 'title'], 		'taxonomies'          => ['topicality'], 		'has_archive'         => false, 		'rewrite'             => true, 		'query_var'           => true, 	]); }

function register_post_types(){ register_post_type( 'masterclass', [ 'label' => null, 'labels' => [ 'name' => 'Майстер-класи', 'singular_name' => 'Майстер-клас', 'add_new' => 'Додати майстер-клас', 'add_new_item' => 'Додавання майстер-класу', 'edit_item' => 'Редагувати майстер-класу', 'new_item' => 'Новий майстер-клас', 'view_item' => 'Дивитися майстер-клас', 'search_items' => 'Шукати майстер-клас', 'not_found' => 'Не знайдено майстер-класу', 'not_found_in_trash' => 'Не знайдено в корзині', 'parent_item_colon' => '', 'menu_name' => 'Майстер-класи', ], 'description' => 'Майстер-клас', 'public' => true, 'publicly_queryable' => false, 'exclude_from_search' => true, 'show_ui' => true, 'show_in_nav_menus' => true, 'show_in_menu' => true, 'show_in_admin_bar' => true, 'show_in_rest' => true, 'rest_base' => null, 'menu_position' => 4, 'menu_icon' => 'dashicons-star-filled', 'hierarchical' => false, 'supports' => [ 'title'], 'taxonomies' => ['topicality'], 'has_archive' => false, 'rewrite' => true, 'query_var' => true, ]); }

если открыть запись - категория отображается, ее можно выбрать
но для фильтрации колонка с категориями недоступна

Почему не отображается фильтр по категориях для post_type?

если для типа записей поставить 'taxonomies' => ['categoty'],
тогда все отображается

Почему не отображается фильтр по категориях для post_type?

но мне нужно чтобы отображался фильтр и список именно моей таксономии специально для данного типа записей
все настройки переставил с false на true и наоборот
не помогает
в чем может быть проблема?

Дополнительно:

Ответы:

Попробуйте этот пример.

Нужно решить такую задачу?

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

Заказать помощь
Лучший ответ
1
Кирилл JS Ответ

Для кастомного типа записи и своей таксономии недостаточно просто зарегистрировать register_taxonomy(). Нужно убедиться, что таксономия привязана к нужному post_type, зарегистрирована на init, имеет включённый UI, а если речь про фильтр в админке, то для него часто добавляют отдельный dropdown через restrict_manage_posts.

Базовая регистрация:

add_action('init', function () {
    register_taxonomy('topicality', ['masterclass'], [
        'hierarchical' => true,
        'public' => true,
        'show_ui' => true,
        'show_admin_column' => true,
        'show_in_rest' => true,
        'query_var' => true,
        'rewrite' => ['slug' => 'topicality'],
        'labels' => [
            'name' => 'Актуальність',
            'singular_name' => 'Актуальність',
        ],
    ]);
});

add_action('init', function () { register_taxonomy('topicality', ['masterclass'], [ 'hierarchical' => true, 'public' => true, 'show_ui' => true, 'show_admin_column' => true, 'show_in_rest' => true, 'query_var' => true, 'rewrite' => ['slug' => 'topicality'], 'labels' => [ 'name' => 'Актуальність', 'singular_name' => 'Актуальність', ], ]); });

Если нужен выпадающий фильтр в списке записей masterclass в админке:

add_action('restrict_manage_posts', function () {
    global $typenow;
 
    if ($typenow !== 'masterclass') {
        return;
    }
 
    wp_dropdown_categories([
        'show_option_all' => 'Всі актуальності',
        'taxonomy' => 'topicality',
        'name' => 'topicality',
        'orderby' => 'name',
        'selected' => $_GET['topicality'] ?? '',
        'hierarchical' => true,
        'hide_empty' => false,
        'value_field' => 'slug',
    ]);
});

add_action('restrict_manage_posts', function () { global $typenow; if ($typenow !== 'masterclass') { return; } wp_dropdown_categories([ 'show_option_all' => 'Всі актуальності', 'taxonomy' => 'topicality', 'name' => 'topicality', 'orderby' => 'name', 'selected' => $_GET['topicality'] ?? '', 'hierarchical' => true, 'hide_empty' => false, 'value_field' => 'slug', ]); });

После изменения rewrite-параметров один раз пересохраните постоянные ссылки в админке. Если фильтр нужен не в админке, а на фронтенде, тогда это уже отдельная форма с tax_query в WP_Query.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно