Пользовательская таксономия с tax_query

2 авг. 2013 г., 02:30:32
Просмотры: 19.9K
Голосов: 0

Итак, я создал пользовательский тип таксономии с помощью плагина (CMS Press), и теперь я пытаюсь получить все записи с терминами таксономии в этой таксономии.

Мой get_posts выглядит так:

$args = Array( 
    'numberposts' => 5, 
    'offset' => 0,
    'post_status' => 'publish',
    'content-type' => 'my-term'
);

get_posts($args);

Я также пробовал:

$args = Array( 
    'numberposts' => 5, 
    'offset' => 0,
    'post_status' => 'publish',
    'tax_query' => Array( Array ( 
        'taxonomy' => 'content-type' 
        'field' => 'slug' 
        'terms' => 'my-term' 
    ));

get_posts($args);

Это работает нормально, когда я не использую пользовательскую таксономию. Если я изменю свой запрос на:

$args = Array( 
    'numberposts' => 5, 
    'offset' => 0,
    'post_status' => 'publish',
    'tax_query' => Array( Array ( 
        'taxonomy' => 'post_tags' 
        'field' => 'slug' 
        'terms' => 'some-tag' 
    ));

get_posts($args);

это работает.

Интересно, не пропустил ли я что-то, что мешает запрашивать пользовательские таксономии. Буду признателен за любую помощь.

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

Привет, Мэтт, я не знаком с версией заполнения массива, которую ты здесь показал. Все методы, которые я видел, используют синтаксис вроде $args = array( 'numberposts' = -1, 'post_status' = 'publish' ); и т.д. На всякий случай, если это поможет. Ты можешь заполнить массив как $arg['numberposts'] = -1, но это опять же отличается от того, что ты показал. Подробнее смотри на php.net.

Jon Jon
2 авг. 2013 г. 03:16:45

Во-первых, я предполагаю, что ты на самом деле вызываешь get_posts (множественное число), и get_post — это просто опечатка. Также post_tags (встроенная таксономия в единственном числе — post_tag). Для целей отладки я предлагаю использовать WP_Query вместо get_posts, тогда ты сможешь сделать var_dump объекта запроса, чтобы увидеть фактический запрос, который генерируется и отправляется в базу данных.

Milo Milo
2 авг. 2013 г. 03:44:36

Извини, я форматировал на основе некоторых отладочных данных. Уверяю, что в реальном коде я использую синтаксис массива (и get_posts) правильно. Я отредактирую, чтобы это отразить.

Matt Dunnam Matt Dunnam
2 авг. 2013 г. 03:50:24

Обычно должно работать... На всякий случай, пользовательская таксономия применяется к обычным записям, верно?

Gioia Fueter Gioia Fueter
26 июн. 2014 г. 00:43:10
Все ответы на вопрос 2
2

Из Кодекса WordPress для wp_query:

Вывод записей с меткой bob из пользовательской таксономии 'people':

$args = array(
    'post_type' => 'post',
    'people' => 'bob'
);
$query = new WP_Query( $args );

Вывод записей с меткой bob из пользовательской таксономии 'people' с использованием tax_query:

$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        array(
            'taxonomy' => 'people',
            'field' => 'slug',
            'terms' => 'bob'
        )
    )
);
$query = new WP_Query( $args );

Смотрите страницу Кодекса для дополнительных примеров.

2 авг. 2013 г. 03:35:00
Комментарии

Вот что мы пробовали. Это не сработало (см. выше).

Matt Dunnam Matt Dunnam
2 авг. 2013 г. 04:37:28

У меня это работает.

herrfischer herrfischer
22 нояб. 2016 г. 19:55:44
0

Наиболее вероятная причина этой проблемы — использование дефисов (-) в названии вашей пользовательской таксономии. Дефисы крайне проблематичны при использовании в именах пользовательских таксономий, поэтому по правилам их следует избегать любой ценой.

Если вам нужно разделить слова в названии пользовательской таксономии или даже пользовательского типа записи, следует использовать только символы подчеркивания (_). Также избегайте использования верблюжьего регистра (camelCase), цифр в качестве первого символа и любых специальных символов.

9 сент. 2014 г. 16:10:55