Включите категории пользовательских типов сообщений в основной запрос WordPress

Чтобы включить категории произвольных типов записей в основной запрос, в WordPress можно использовать несколько методов. Вот несколько подходов:

  1. Использование ловушки pre_get_posts. Вы можете изменить основной запрос до его выполнения, используя ловушку действия pre_get_posts. Вы можете добавить в запрос категории произвольных типов сообщений, проверив параметры запроса и изменив их соответствующим образом. Вот пример:
function add_custom_post_type_categories( $query ) {
    if ( $query->is_main_query() && ! is_admin() ) {
        $query->set( 'post_type', array( 'post', 'your_custom_post_type' ) );
        $query->set( 'category_name', 'your_category_slug' );
    }
}
add_action( 'pre_get_posts', 'add_custom_post_type_categories' );

Замените 'your_custom_post_type'на название вашего пользовательского типа публикации и 'your_category_slug'на фрагмент категории, которую вы хотите включить.

  1. Использование пользовательской функции. Вы можете создать пользовательскую функцию, которая изменяет основной запрос, используя хук pre_get_posts. Вот пример:
function modify_main_query( $query ) {
    if ( $query->is_main_query() && ! is_admin() ) {
        $post_types = array( 'post', 'your_custom_post_type' );
        $categories = array( 'your_category_slug' );
        if ( $query->is_category( $categories ) ) {
            $query->set( 'post_type', $post_types );
        }
    }
}
add_action( 'pre_get_posts', 'modify_main_query' );

И снова замените 'your_custom_post_type'на имя вашего пользовательского типа публикации и 'your_category_slug'на фрагмент категории, которую вы хотите включить.

<ол старт="3">

  • Использование фильтра parse_tax_query. Вы можете использовать фильтр parse_tax_query, чтобы изменить налоговый запрос для основного запроса. Вот пример:
  • function include_custom_post_type_categories( $tax_query, $query ) {
        $post_types = array( 'post', 'your_custom_post_type' );
        $categories = array( 'your_category_slug' );
        if ( $query->is_category( $categories ) ) {
            $tax_query[] = array(
                'taxonomy' => 'category',
                'field'    => 'slug',
                'terms'    => $categories,
            );
            $query->set( 'post_type', $post_types );
        }
        return $tax_query;
    }
    add_filter( 'parse_tax_query', 'include_custom_post_type_categories', 10, 2 );

    Замените 'your_custom_post_type'на название вашего пользовательского типа публикации и 'your_category_slug'на фрагмент категории, которую вы хотите включить.