カテゴリーを制限する

閲覧数: 18(1)

過去に何度も書いた「カテゴリー制限」の話、元はと言えば初期に書かれた「非公開」の記事が原因です。トップページやアーカイブさらには検索結果などに非公開の記事が表示されないようにするための制御です。最近は「カテゴリー制限」や「検索結果のカテゴリー制限」などに書いた手法でカテゴリー制限を実装しています。

今回は一歩踏み込んでコア関数を書き換えることで実現してみたいと思います。子テーマのfunctions.phpに手を入れます。

function fotografie_pre_get_posts($query) {
    if (is_admin() || !$query->is_main_query()){
        return;
    }
    if ( !is_user_logged_in() ) {
        $query->set( 'cat', '公開' );
    }
}
add_action( 'pre_get_posts', 'fotografie_pre_get_posts' );

pre_get_posts()に対してログインしていない場合には「WP_Query」の検索条件にカテゴリー制限(公開のみ)をかけます。本当は引数で「category__not_in」を使いたかったのですが、配列にして複数のカテゴリーIDを渡しても、先頭のカテゴリーIDにしか制御が掛けられなかったので、苦肉の策で「公開」カテゴリーのみ対象とする方法にしました。この変更により、かつての手法であった、index.phpやarchive.phpとsearch.phpへの個別修正が不要になりました。ページナビに関しては引き続きsingle.php内でログイン状態の判定を行い制御しています。

                    if ( is_user_logged_in() ):
                     else :
                       $args = wp_parse_args( $args, array(
                            'prev_text'          => '%title',
                            'next_text'          => '%title',
                            'in_same_term'       => true,
                            'excluded_terms'     => '除外カテゴリー',
                            'taxonomy'           => __( 'post_tag' ),
                            'screen_reader_text' => __( 'Post navigation' ),
                        ) );
                        the_post_navigation($args);
                    endif;

the_post_navigation()の引数で「除外カテゴリー」を指定するとともに、前後のページは「タグ」に基づいて表示されるように変更しました。サイト全体のカテゴリー制限は引き続きプラグイン「Allow Categories」に頼っています。いつか卒業できたらいいなとは思いますが、とても便利なプラグインなのでまだまだ手放せません(笑)

カテゴリーIT閑話, 公開タグ, , ,
関連記事
カテゴリー制限
2019年6月6日

カテゴリー制限はこのサイトでは過去に何度も出題された「頻出過去問題」です。初期の頃は「Allow C  続きを読む

検索結果のカテゴリー制限
blank
2019年5月18日

検索ネタを連発しておりますが、、、今回はテーマとプラグインどっちで修正するかという課題に挑戦しました  続きを読む

Elasticsearch 5.6.5
blank
2017年12月17日

少し古い記事の「検索に悩む」で紹介した「Elasticsearch」ですがWordPressやMed  続きを読む

Sticky Headerその後
blank
2016年11月5日

Sticky Headerをやりたくて、その名もずばり「Sticky Header」と言うプラグイン  続きを読む

カテゴリー制限をかける
blank
2015年11月24日

一般公開とログイン後公開と非公開、この3パターンをカテゴリー制限で実現するプラグインとして、「Hom  続きを読む

関連記事の大原則
blank
2019年6月16日

ググったりしてあるページにたどり着いた閲覧者に対して、それに関連する記事を提示して少しでもサイトの滞  続きを読む

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください