Аргументы запроса WP для извлечения сообщений пользовательского типа, относящихся к определенной категории?
Я играл в течение нескольких часов, но все еще не могу понять правильные аргументы для вторичного запроса WP_, который должен получать все сообщения my_custom_post_type, которые находятся в запрашиваемой категории.
Сценарий является пользовательским category.php файл шаблона (написание пользовательской темы) для отображения архива категорий для сообщений пользовательского типа. Следовательно, основной запрос выполняется по названию категории/слагу, полученному из URL-адреса (например, /категория/имя кошки). По умолчанию основной однако запрос не извлекает сообщения пользовательского типа записей. Пожалуйста, обратите внимание, что я использую таксономию категорий по умолчанию с моим пользовательским типом записи.
Итак, я ищу что-то вроде
$args = array(
'post_type' => 'my_custom_post_type',
'category_id' => $current_category_id
);
Однако, как получить $current_category_id из основного запроса? Или, как это сделать правильно?
1 answers
Если вы хотите, чтобы ваш основной запрос учитывал ваш пользовательский тип записи, вы можете сделать, как показано ниже:
function add_custom_post_type_to_query( $query ) {
if ( $query->is_archive() && $query->is_main_query() ) {
$query->set( 'post_type', array('post', 'my_custom_post_type') );
}
}
add_action( 'pre_get_posts', 'add_custom_post_type_to_query' );
Вы можете разместить приведенный выше код в своей теме functions.php или в плагине.
Чтобы получить идентификатор текущего термина таксономии (здесь таксономия является таксономией "категория" по умолчанию), вы можете использовать следующую строку кода:
get_queried_object()->term_id;
(взято из здесь)
Поскольку вы говорите о пользовательском типе записи, вы, вероятно, будете использовать пользовательскую таксономию и еще один день. Чтобы правильно включить некоторую фильтрацию таксономии в WP_Query, вы можете обратиться к по этой ссылке
Вот пример запроса WP_ с таксономией категорий:
$args = array(
'post_type' => 'my_custom_post_type', // or multiples : array('my_custom_post_type','post')
'tax_query' = array(
array(
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => get_queried_object()->term_id,
)
)
);
Но вы, вероятно, никогда не захотите выполнять WP_Query с tax_query для вашего текущего термина таксономии, так как он делает это автоматически (после добавления пользовательского типа записи в основные типы записей запроса)