WP_Query по ID категории и произвольному post_type

20 нояб. 2014 г., 02:17:12
Просмотры: 120K
Голосов: 13

Мне нужно получить все записи, которые принадлежат заданной категории (стандартной, не произвольной) и произвольному типу записи. Всё просто. Тот факт, что это не работает, мне кажется нелепым. Возможно, я что-то упускаю?

Вот что я пробовал:

$args=array(
    'posts_per_page' => 50, 
    //'taxonomy' => 'category',      
    'post_type' => 'my_custom_type'
    'category__in' => array($cat_id),
);
$wp_query = new WP_Query( $args );

затем

$args=array(
    'posts_per_page' => 50,    
    'post_type' => 'my_custom_type'
    'tax_query' => array(
        array(
            'taxonomy' => 'category',
            'field'    => 'id',
            'terms'    => $cat_id,
        ),
    ),
 );
$wp_query = new WP_Query( $args );

и конечно

$args=array(
    'posts_per_page' => 50, 
    'post_type' => 'my_custom_type'
    'category' => $cat_id,
);
$wp_query = new WP_Query( $args );

также пробовал различные комбинации добавления/переименования/удаления ключей $args.

Получение всех записей по типу записи, а затем перебор их и фильтрация по категории - не эффективный вариант, я полагаю.

Пожалуйста, помогите.

6
Комментарии

похоже, но не помогает: http://wordpress.stackexchange.com/questions/166564/category-in-not-working-on-custom-post-type

ᴍᴇʜᴏᴠ ᴍᴇʜᴏᴠ
20 нояб. 2014 г. 02:23:31

в вашем первом варианте есть опечатка. Я предполагаю, что у вас включена отладка и вы не видите никаких ошибок? где вы устанавливаете $cat_id? вы можете сделать var_dump вашего запроса после выполнения и посмотреть на сгенерированный SQL, это должно выявить проблему. также, вероятно, не стоит перезаписывать $wp_query.

Milo Milo
20 нояб. 2014 г. 02:39:28

@Milo спасибо, на самом деле $cat_id является ключом массива (отсюда и появилась одиночная кавычка), я просто изменил его на простую переменную, чтобы вопрос выглядел менее запутанным. Спасибо, что указали на это. Что касается перезаписи $wp_query - учту на будущее, спасибо

ᴍᴇʜᴏᴠ ᴍᴇʜᴏᴠ
20 нояб. 2014 г. 02:52:33

До сих пор видны синтаксические ошибки, Jamaica. Отсутствующая запятая в массиве должна вызывать ошибку парсинга PHP. Не могли бы вы опубликовать фактически используемый код без правок?

jdm2112 jdm2112
20 нояб. 2014 г. 04:32:12

@jdm2112 Мой позор, это была запятая. Это объясняет, почему я не получал ничего при попытке раскомментировать ключи, связанные с категориями. Я бы попросил вас опубликовать предложение в качестве ответа, чтобы я мог принять и проголосовать за него, но не уверен, будет ли это полезно для сообщества. Вместо этого я проголосовал за ваши другие ответы. Я удалю этот вопрос чуть позже. Спасибо

ᴍᴇʜᴏᴠ ᴍᴇʜᴏᴠ
20 нояб. 2014 г. 15:50:31

Рад, что это решило вашу проблему.

jdm2112 jdm2112
20 нояб. 2014 г. 18:29:47
Показать остальные 1 комментариев
Все ответы на вопрос 3
1
15

Попробуйте это, у меня сработало.

    $args=array(
    'posts_per_page' => 50, 
    'post_type' => 'my_custom_type'
    'cat' => $cat_id,
);
$wp_query = new WP_Query( $args );

Параметры категорий

cat (int): используйте ID категории.
category_name (string): используйте slug категории (НЕ название).
category__and (array): используйте ID категории.
category__in (array): используйте ID категории.
category__not_in (array): используйте ID категории.
12 сент. 2016 г. 13:25:59
Комментарии

Привет @kunal-gauswami, добро пожаловать на сайт и спасибо за ваш ответ. К сожалению, у меня больше нет этого кода, поэтому я не могу попробовать ваше предложение, но если кто-то подтвердит, что это сработало, я с радостью приму ответ. В любом случае, вот мой голос за ваш ответ.

ᴍᴇʜᴏᴠ ᴍᴇʜᴏᴠ
16 сент. 2016 г. 11:23:48
1

это сработало для меня.

$args=array(
'posts_per_page' => 50,    
'post_type' => 'my_custom_type'
'tax_query' => array(
    array(
        'taxonomy' => 'category', // дважды проверьте название таксономии в вашей БД
        'field'    => 'id',
        'terms'    => $cat_id,
    ),
   ),
 );
$wp_query = new WP_Query( $args );
4 нояб. 2019 г. 14:10:00
Комментарии

Этот ответ верен, если вы делаете запрос для пользовательской таксономии, связанной с пользовательским типом записи

Low Low
22 янв. 2020 г. 11:26:29
0

Получить записи по ID категории

$categories = get_categories();
$loop = new WP_Query([
    'posts_per_page' => 6,
    'post_type' => 'post',
    'tax_query' => [
        [
            'taxonomy' => 'category',
            'field' => 'id',
            'terms' => $categories[0]->term_id
        ],
    ],
]);
2 февр. 2024 г. 15:53:53