Чтобы включить категории произвольных типов записей в основной запрос, в WordPress можно использовать несколько методов. Вот несколько подходов:
- Использование ловушки
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'на фрагмент категории, которую вы хотите включить.
- Использование пользовательской функции. Вы можете создать пользовательскую функцию, которая изменяет основной запрос, используя хук
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'на фрагмент категории, которую вы хотите включить.