Архив меток таксономии для пользовательского типа записей: записи не найдены

28 июл. 2013 г., 03:35:54
Просмотры: 8.06K
Голосов: 8

Я зарегистрировал пользовательский тип записей "object" и привязал таксономию "post_tag", чтобы эти объекты можно было помечать метками.

register_taxonomy_for_object_type('post_tag', 'object');

Когда я посещаю domain.com/tag/{object-slug}, записи не находятся, хотя они существуют.

Вот как был объявлен мой CPT:

register_post_type( 'objet', 
        array('labels' => array(/* удалено для ясности */),
            'description' => __( 'blabla' ), 
            'public' => true,
            'publicly_queryable' => true,
            'exclude_from_search' => false,
            'show_ui' => true,
            'query_var' => true,
            'menu_position' => 3, 
            'menu_icon' => get_stylesheet_directory_uri() . '/library/images/custom-post-icon.png', 
            'rewrite'   => array( 'slug' => 'stock', 'with_front' => false ), 
            'has_archive' => 'stock',
            'capability_type' => 'post',
            'taxonomies' => array('post_tag'),
            'hierarchical' => false,
            'supports' => array( 'title', 'editor', 'thumbnail', 'revisions', 'sticky')
        ) 
    );
1
Комментарии

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

sulfureous sulfureous
28 июл. 2013 г. 04:45:07
Все ответы на вопрос 1
2
23

Запросы архивов меток и категорий по умолчанию ищут только записи типа post. Чтобы добавить свои пользовательские типы записей в эти запросы, вы можете использовать действие pre_get_posts:

function wpa_cpt_tags( $query ) {
    // Проверяем, является ли запрос архивом меток и основным запросом
    if ( $query->is_tag() && $query->is_main_query() ) {
        // Устанавливаем типы записей для поиска
        $query->set( 'post_type', array( 'post', 'object' ) );
    }
}
// Добавляем функцию к действию pre_get_posts
add_action( 'pre_get_posts', 'wpa_cpt_tags' );
28 июл. 2013 г. 03:51:47
Комментарии

Спасибо. И чтобы включить категории в ту же функцию, как мне было нужно, условие должно быть таким: if( ($query->is_tag() || $query->is_category()) && $query->is_main_query() ){}

Jonny Perl Jonny Perl
6 окт. 2016 г. 19:44:49

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

Squagem Squagem
18 апр. 2017 г. 22:07:39