category__in не работает с пользовательским типом записей

27 окт. 2014 г., 08:02:11
Просмотры: 14.1K
Голосов: 3

Не могу заставить работать цикл WP_Query, не понимаю почему не работает параметр category__in. Хочу просто выбрать определенные категории ИЗ моего пользовательского типа записей.

$args = array(
  'post_type' => 'bbt',
  'category__in' => array(90,89)
);

$loop = new WP_Query($args);

Когда я использую echo $loop->found_posts;, он возвращает 0, НО у меня есть 2 записи в этих категориях

РЕДАКТИРОВАНО: Вот как была назначена категория:

    $labels = array(
    'name' => _x( 'Категории Big Boys Toys', 'общее название таксономии' ),
    'singular_name' => _x( 'Метка', 'единственное название таксономии' ),
    'search_items' =>  __( 'Поиск типов' ),
    'all_items' => __( 'Все метки' ),
    'parent_item' => __( 'Родительская метка' ),
    'parent_item_colon' => __( 'Родительская метка:' ),
    'edit_item' => __( 'Редактировать метки' ),
    'update_item' => __( 'Обновить метку' ),
    'add_new_item' => __( 'Добавить новую метку' ),
    'new_item_name' => __( 'Новое имя метки' ),
);

// Регистрация пользовательской таксономии
register_taxonomy('tagbbt',array('bbt'), array(
    'hierarchical' => true, // определить, использовать ли систему как метки или категории
    'labels' => $labels,
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'tag-bbt' ),
));
3
Комментарии

Привязан ли ваш тип записи bbt к таксономии category?

Nilambar Sharma Nilambar Sharma
27 окт. 2014 г. 08:05:14

Пожалуйста, предоставьте [правку] с кодом, который используется для привязки таксономии category к вашему типу записи

Pieter Goosen Pieter Goosen
27 окт. 2014 г. 08:18:12

@PieterGoosen спасибо, я только что добавил этот код в свой ответ

rand_user91 rand_user91
27 окт. 2014 г. 08:21:59
Все ответы на вопрос 1
2

category__in никогда не будет работать, так как вы не используете встроенную таксономию category. Вместо этого вы используете пользовательскую таксономию с названием tagbbt. Посмотрите эту статью, где я объяснил различия между ними.

Для пользовательских таксономий необходимо использовать tax_query.

Вот пример:

$args = array(
    'post_type' => 'bbt',
    'tax_query' => array(
        array(
            'taxonomy' => 'tagbbt', // Указываем пользовательскую таксономию
            'field'    => 'term_id', // Поле для сравнения (ID термина)
            'terms'    => array(90,89), // Массив ID терминов для фильтрации
        ),
    ),
);
$query = new WP_Query( $args ); // Создаем новый запрос с указанными параметрами
27 окт. 2014 г. 08:30:03
Комментарии

Отлично, это именно то, что требуется. Я обязательно изучу ваш пост, чтобы узнать больше о различиях между Таксономиями/Пользовательскими Таксономиями, большое спасибо

rand_user91 rand_user91
27 окт. 2014 г. 08:37:19

Всегда пожалуйста. Приятного чтения :-)

Pieter Goosen Pieter Goosen
27 окт. 2014 г. 08:38:56