web-dev-qa-db-ja.com

get_posts()のtax_queryが機能しませんか?

私はproduct(jigoshop製品)と呼ばれるカスタム投稿タイプのすべての分類内のすべての投稿を印刷しようとしています。だから私は$cats = get_terms('product_cat');を使ってすべての分類法を取得し、それからそれらすべてをループ処理し、分類法の範囲内にあるすべての投稿を取得します。問題は、うまくいかないことです。それはただ空白を返します!

$uposts = get_posts(array(
    'post_type' => 'product',
    'numberposts' => -1,
    'tax_query' => array(
        'taxonomy' => $cat->taxonomy,
        'field' => 'slug',
        'terms' => array($cat->slug),
        'operator' => 'IN'
    )
));

'terms' => array($cat->slug)'terms' => $cat->slugに変更すると、tax_queryを完全に無視するかのように、 all postsが返されます。

これが失敗する原因は何でしょうか。私はoperatorで遊んでみました。fieldをIDに変更しました(そしてまた、用語として$cat->IDを送っています)...何もしません!

$ catの値は以下のとおりです。

stdClass Object
(
    [term_id] => 114
    [name] => Ny testkategori
    [slug] => ny-testkategori
    [term_group] => 0
    [term_taxonomy_id] => 115
    [taxonomy] => product_cat
    [description] => 
    [parent] => 0
    [count] => 2
    [meta_id] => 3
    [jigoshop_term_id] => 114
    [meta_key] => order
    [meta_value] => 1
)

そのため、$ cat-> slugと$ cat-> taxonomyは有効な値です。

7
qwerty

tax_queryはtaxクエリ引数の配列を受け取ります(配列の配列を受け取ります)が、単一の配列のみを使用しています。正しいコードは以下の通りです。

$uposts = get_posts(
    array(
        'post_type' => 'product',
        'numberposts' => -1,
        'tax_query' => array(
            array(
                'taxonomy' => $cat->taxonomy,
                'field' => 'slug',
                'terms' => array($cat->slug),
                'operator' => 'IN',
            )
         )
    )
);

詳しくは このページ をご覧ください。

16
Vinod Dalvi