サポート » 使い方全般 » category.phpでOR条件で別のカテゴリの記事も表示したい

  • 解決済 rei15

    (@rei15)


    こんにちは。

    カテゴリごとの一覧のテンプレートページを作っていますが、
    category.phpで表示したときは、そのカテゴリID以外にも、OR条件で「例:cat=1」も表示したい場合はどうしたらいいでしょうか。

    なぜそんなことをしているかというと、
    ・共通
    ・カテゴリA
    ・カテゴリB
    ・カテゴリC
    ・カテゴリD
    というようなカテゴリがあるとして、共通に投稿したものは、カテゴリA~Dで絞った場合も表示したいからです。

    クエリーを書き換えないといけないですが、functions.phpで

    function add_common_category_to_all($query){
        if(is_category()){
            $query->set('cat', array("1", "$cat"));
        }
        return $query;
    }
    add_filter('pre_get_posts','add_common_category_to_all');

    のようにしてみたら、$catが未定義となりました。
    category.php内では、グローバル変数の $cat は有効ですが、 function.phpでは参照できないですね。

    この方法は間違っているのでしょうか。

    よろしくお願いします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • $catが未定義となりました。

    関数内で $cat が定義されていないですよ?

    $cat って… と思ったけど、ういうことがやりたいのではないですか? $cat=1 が「共通」のカテゴリだとしています。set() の引数は array() じゃなくて、カンマ区切りの数値です。

    function add_common_category_to_all($query) {
        if ($query->is_category()) {
            $cat_common = 1;
            $cat_data = $query->query_vars['cat'] . ',' . $cat_common;
            $query->set('cat', $cat_data);
        }
    }

    ただし、表示される投稿の順序はデフォルトで並びます。追加するカテゴリはハードコーディングでいいのかな?

    KUCKLU様、
    $catは、category.php内でグローバル変数として使えるので、functions.php内でも連動しているかと思いました。

    kjmtsh様、

    $cat_data = $query->query_vars['cat'] . ',' . $cat_common;

    なるほどです!
    ありがとうございます!

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「category.phpでOR条件で別のカテゴリの記事も表示したい」には新たに返信することはできません。