web-dev-qa-db-ja.com

WP_Queryで選択的な投稿ではなくすべての投稿を返すtax_query

私がやろうとしていること

こんにちは、私のサイトにprojectsというカスタム投稿タイプがあります。次に、projects投稿タイプに対して_project_catagories_というカスタム分類を作成しました。プロジェクトアーカイブページ(すべてのプロジェクトが表示されます)に、カテゴリ別の参照というセクションがあり、ユーザーがカテゴリ名をクリックすると、そのカテゴリの下のプロジェクトが表示されます。

ここで、クリックしたカテゴリの下のプロジェクトを表示するために、各プロジェクトカテゴリプロジェクトを示す_taxonomy-project_catagories.php_というテンプレートファイルを作成しました。次に、そのファイル内で、最初にget_term_by()を使用して、次のようにそのページの_term_id_を取得します。

_$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
_

次に、その_term_id_をWP_Query()に渡して、次のように、そのカテゴリの下にあるプロジェクトのリストを取得します。

_$args = array(
  'numberposts'  => -1,
  'post_type'    => 'projects',
  'tax_query'    => array (
    'taxonomy' => 'project_catagories',
    'field'    => 'term_id',
    'terms'    => $term->term_id
  )
);

$the_project_cat_query = new WP_Query($args);
_

次に、最後にループしてプロジェクトを表示します。

問題:

ここで問題は、_term_id_がWP_Query()に渡されているかどうかに関係なく、すべてのカテゴリのすべてのプロジェクトが表示されていることです。私はこのフォーラムとスタックオーバーフローに同様の質問がたくさんあることを知っています。それらすべてをチェックしましたが、助けにはなりませんでした。私は_WP_Quey_のドキュメントをチェックしても、何が起こっているのか理解できませんでした。だから、どんな助けも本当に役立つでしょう。

テスト方法

私は1つのプロジェクトカテゴリの下に1つのプロジェクトを作成したので、技術的にはそのプロジェクトカテゴリページにある場合、プロジェクトの詳細を表示するだけで、他のページについては、そのプロジェクトカテゴリの下にカテゴリがないため空白になります。

IIは手動で_term_id_を入力し、field値をslugにチェックしてから、手動でスラッグを入力することも試みました。すべての場合でまったく同じ結果になります。

どんな反応も本当に役に立ちます。

1
iSaumya

分類パラメータ

重要な注意tax_queryは、税金クエリ引数arraysarrayを取ります(それは配列の配列)。

この構成では、最初の(外部)配列の関係パラメーターを使用して複数の分類法を照会し、分類法配列間のブール関係を記述できます。

'tax_query'配列の配列を追加する必要があります( Codexを参照 ):

'tax_query'    => array (
    array(
        'taxonomy' => 'project_catagories',
        'field'    => 'term_id',
        'terms'    => $term->term_id
    )
)
1
nmr