「tax_query」パラメーターがWP_Queryで機能しない


17

「エピソード」と呼ばれるカスタム投稿タイプがあります。「エピソード」に添付されている「video_type」というカスタム分類には、「bonus-footage」と「episode」という2つの用語が含まれています。「episode」には、「season-1」と「season-2」という2つの子用語が含まれます(他の季節は将来追加されます)。「エピソード」タイプの最新の投稿のみを取得しますが、「ボーナスフッテージ」という用語の投稿は含めません。以下は、これに使用しているコードです。

<?php
$some_args = array(
    'tax_query' => array(
        'taxonomy' => 'video_type',
        'terms' => 'bonus-footage',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'NOT IN'
     ),
    'posts_per_page' => 1,
    'post_type' => 'episode',
);

$s = new WP_Query( $some_args );

if ( $s->have_posts() ) : $s->the_post();
    // Do something with this post.
endif;
?>

「季節」用語のいずれかの投稿が最新の場合、クエリは期待どおりに機能しますが、「ボーナスフッテージ」の投稿が最新の場合、その投稿が読み込まれます。言い換えると、「tax_query」パラメータはクエリに影響を与えないようです。「tax_query」を適切にフォーマットしていないのですか、それとも何か他のものがありませんか?

また、「tax_query」を次のように設定しようとしました。

'tax_query' => array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
    'include_children' => true,
        'operator' => 'IN'
),

しかし、私はまだ同じ結果を得ています。

回答:


41

tax_queryパラメータは、配列の配列だけでなく、アレイ。

この:

'tax_query' => array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'IN'
),

代わりにこれになります:

'tax_query' => array(
    array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'IN'
    )
),

1
チップありがとう。Wordpressがこのように構築した理由について興味がありますか?
ジョシュファーンマン

3
ブールを使用して、複数の税クエリを実行できます。「複数の分類処理」セクションのリンクされたコーデックスエントリを参照してください。
チップベネット

1
私にとって魅力のように働いた!ありがとう、私はこれで壁から頭を叩いた!
チャールズブラックウェル14年

これをurlパラメーターに変換し、WP_Queryで実際に使用する方法を理解できないようです。ただ無視され続けます。
-realgeek
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.