Запрос сообщений по пользовательскому идентификатору таксономии

У меня есть пользовательский тип сообщений с именем portfolio и пользовательская таксономия с именем build-type (действующая как категории)

Я пытаюсь запросить portfolio сообщения по build-type ID, например. все сообщения Портфолио в «Отелях» (id = 4 для этой таксономии)

// gets the ID from a custom field to show posts on a specific page   
$buildType = get_post_meta($post->ID, 'build_type_id', true);
// run query
query_posts(array( 
    'post_type' => 'portfolio',
    'showposts' => -1,
    'tax_query' => array(
        'taxonomy' => 'build-type',
        'terms' => $buildType,
        'field' => 'term_id'
    ),
    'orderby' => 'title',
    'order' => 'ASC'
));

В настоящее время он вызывает все сообщения portfolio, а не только сообщения с идентификатором build-type.

Для 'field' => 'term_id' я должен использовать term_id, tag_ID, id или что-то еще?

Кто-нибудь знает, как заставить это работать?

Заранее спасибо!


person mattberridge    schedule 07.10.2011    source источник


Ответы (2)


Я решил это с помощью: https://wordpress.stackexchange.com/questions/30476/query-posts-by-custom-taxonomy-id

tax-query должен быть массивом массивов

Окончательное решение:

// gets the ID from a custom field to show posts on a specific page
$buildType = get_post_meta($post->ID, 'build_type_id', true);
// run query
query_posts(array( 
    'post_type' => 'portfolio',
    'showposts' => -1,
    'tax_query' => array(
        array(
            'taxonomy' => 'build-type',
            'terms' => $buildType,
            'field' => 'term_id',
        )
    ),
    'orderby' => 'title',
    'order' => 'ASC' )
);

На гитхабе здесь:

https://gist.github.com/1275191

person mattberridge    schedule 19.10.2011

Я не специалист по WP, и я потратил много часов, пытаясь решить одну и ту же проблему. В конце концов я нашел этот пост в блоге: http://richardsweney.com/blog/wordpress-3-0-custom-queries-post-types-and-taxonomies/

Ответ несколько полуплохой: очевидно, вы не можете так фильтровать пользовательские типы сообщений (это возможно только для сообщений), что очень жаль!

То, что я сделал, было следующим:

$args['custom_tax'] = 'custom_tax_slug'; запрос_сообщения ($ аргументы);

Надеюсь, поможет!

//Майк

person Mike    schedule 18.10.2011