サポート » 使い方全般 » query_postsでカテゴリとタグ両方での絞り込み

  • 解決済 gnnk

    (@gnnk)


    はじめまして。

    カテゴリーページ内のループで、
    query_postsを使って、特定のタグのみを表示させたい場合、
    query_posts($query_string."&tag=タグスラッグ")
    としても、該当なしとなり、表示されません。

    また、home.php等で、
    query_posts("category_nameカテゴリ名&tag=タグスラッグ")
    と、カテゴリとタグ両方を指定した場合でも、
    該当なしとなります。

    query_postsを利用する方法では、上記のような指定は
    できないのでしょうか?

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    gnnkさん、こんにちは。

    記述として、そう間違ってはいないようなので、考えられるとしたら、半角&がエスケープされて&としてテンプレートに記述されているくらいしか思いつきません。

    絞り込みの方法ですが、query_postsの引数に配列形式でtag__andを用いると実現可能かと思います。
    (下記は、カテゴリーテンプレート用の記述です。テーマのファイル構成に応じてis_categoryなどで分岐処理を行ってください。また、テンプレートの一番最初に記述いただくのが良いかと思います。)

    $include_cats = explode( '/', $cat . get_category_children( $cat ) );
    $args = array(
    	'category__in' => $include_cats,
    	'tag__and' => array( 12 )
    );
    query_posts( $args );
    $wp_query->query_vars['cat'] = $cat;

    上記ですが、

    1. まずは指定カテゴリの子孫カテゴリのIDを取得し、指定カテゴリも含めて配列にします。
    2. 次にquery_postsに渡す引数を生成、絞り込むタグのID(上記例では12)を指定し、query_postsを実行
    3. 最後にsingle_cat_titleが正しく働くように、$wp_query->query_vars[‘cat’]に元々指定されていたカテゴリのIDを再代入

    という処理内容です。

    トピック投稿者 gnnk

    (@gnnk)

    jim912さん

    ありがとうございます。上記コードで、解決いたしました。

    カテゴリ−とタグのように、2つ以上の絞り込みがある場合、
    配列形式にしないと、上手く動作しないようですね。

    &がエスケープされているのは、投稿した際に自動的に、エスケープされてしまったようです。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「query_postsでカテゴリとタグ両方での絞り込み」には新たに返信することはできません。