トップページの新着記事一覧から特定のカテゴリーを除外して表示させる場合

Simplicityの特徴 フォーラム Simplicityについての質問 トップページの新着記事一覧から特定のカテゴリーを除外して表示させる場合

このトピックには7件の返信が含まれ、1人の参加者がいます。1 年、 3 ヶ月前 ホワイト さんが最後の更新を行いました。

  • 投稿者
    投稿
  • #43925

    ホワイト

    こんばんは。
    特定のカテゴリーを除外して表示させる場合を調べてみたのですが
    query_posts()を使って除外したいカテゴリーを指定するとわかったのですがどのファイルに記述したらよいのでしょうか?初心者で申し訳ないです。

  • #43932

    Hidekichi

    query_posts()ではなくて、pre_get_postsで今時はやります。

    参考: プラグイン API/アクションフック一覧/pre get posts

    例えば上記ページの中に「メインページから特定のカテゴリーを除外」というのがありますが、これらを利用したり、あるいは応用して条件を追加したりすることで特定のカテゴリーを除外することができます。

    子テーマfunctions.phpに追記します。
    モバイルの場合は、親テーマに上記フックを利用されている箇所があり、場合によってはそれを解除する必要があります。

  • #43937

    ホワイト

    ありがとうございます。
    早速やってみたのですが上手くいきません。
    $query->set( ‘cat’, ‘-48’ );の部分にカテゴリIDを入れるといいんですよね?
    ならないってことは何か他に問題があるということですか?

  • #43940

    Hidekichi

    > $query->set( ‘cat’, ‘-48’ );の部分にカテゴリIDを入れるといいんですよね?

    通常はそうです。が、どのようなスクリプトで$query->set( 'cat', '-48' );を書かれたのか、また想定されているカテゴリーを除外するトップページの指定をどのように書かれたか等をここに貼り付けてみて下さい。

    また貼り付けたコードは範囲選択して、codeボタンでハイライト表示して下さい。

    wordpressでは、Query Monitorと言うプラグインがありまして、これを利用するとどのようなフックであったりデータが読み込まれているかを確認することができます。これらを一時的に利用して、指定したフックが動作しているか等を確認してみて下さい。

    またいつものことながら動作は正しく行われているけれどもサーバーが返すのがキャッシュであったりする場合も無きにしも非ずです。なのでキャッシュさせないようにして確認してみることもオススメします。

  • #43952

    ホワイト

    丁寧にありがとうございます。
    貼りつけたコードは用例にあったそのままです。

    function exclude_category( $query ) {
        if ( $query->is_home() && $query->is_main_query() ) {
            $query->set( 'cat', '-1,-1347' );
        }
    }
    add_action( 'pre_get_posts', 'exclude_category' );

    です。これをそのまま子テーマのfunctions.phpに追記しました。

  • #43953

    ホワイト

    教えていただいたこのページの用例「メインページから特定のカテゴリーを除外」です。

  • #44154

    hidekichi

    そのコードで除外できませんでしたか?
    カテゴリのIDが間違っているとかはないですかね?

  • #44475

    ホワイト

    大変失礼しました!
    確認不足でした。そして無事にできました。
    申し訳ありませんでした。

トピック「トップページの新着記事一覧から特定のカテゴリーを除外して表示させる場合」への新規返信追加は締め切られています。

スポンサーリンク
アドセンス(大)
アドセンス(大)