Аргументы запроса 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 из основного запроса? Или, как это сделать правильно?

Author: Bunjip, 2016-01-13

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 для вашего текущего термина таксономии, так как он делает это автоматически (после добавления пользовательского типа записи в основные типы записей запроса)

 3
Author: Sladix, 2017-05-23 12:40:05