サークルのメンバーのみが確認することを目的としたカテゴリーとして、投稿記事の中に内部資料カテゴリーを設けている。
仕様
以下のような仕様になっている。
非表示になっている箇所
以下の箇所では、内部資料カテゴリーに分類されている記事は表示されない。
- ホーム(更新順に記事が表示されているトップページ)
- アーカイブ(カテゴリー、タグ、投稿者、日時などに基づいて投稿を集めたページ)
- 検索
- フィード
また、カテゴリーウィジェットでも「内部資料カテゴリー」自体が表示されない。
意図していない仕様
アーカイブウィジェットでは、内部資料カテゴリーの記事の数も合わせた数字が表示されてしまう。
(数字だけで、記事自体は表示されない)
またサイトマップには表示されてしまう。
注意
見つけにくいだけで、URLに直接アクセスすれば誰でも内容は見れてしまう。
また、Google等の検索サイトでは検索されてしまうこともある。
→各記事のSEO設定からnoindexを有効にすることで回避できるかも知れない。
なので外部に見られたら困るような内容はこのカテゴリーの記事でも書かないこと。
そういう場合はパスワード保護した上での公開や、login_user_onlyショートコードを使うと良いかも知れない。
コード
function.phpに以下のコードを記入することで上記の動作を実現している。
//カテゴリー「内部資料(ID…7)」をホーム、アーカイブ、検索、フィードから非表示に
function exclude_category_original( $query ) {
if ( $query->is_home || $query->is_archive || $query->is_search || $query->is_feed ){
$query->set( 'cat', '-7' );
}
return $query;
}
add_filter( 'pre_get_posts', 'exclude_category_original' );
//カテゴリー「内部資料(ID…7)」をカテゴリーウィジェットから非表示に
function customize_category_list( $args ) {
$args['exclude'] = 7;
return $args;
}
add_filter( 'widget_categories_args', 'customize_category_list' );
それでも人気記事ウィジェットでは表示されてしまうため、以下のように除外カテゴリーを設定することで表示されないようにしている。