WordPress | カテゴリーウィジェットで特定のカテゴリを非表示にする方法
WordPressの「カテゴリー」ウィジェットで、特定のカテゴリを非表示にする方法を紹介しています。
カテゴリーウィジェットで特定のカテゴリを非表示にする
「カテゴリー」ウィジェットで特定のカテゴリを非表示にするには、CSSでカテゴリーに設定されているカテゴリIDからクラス名を指定して非表示にする方法と、add_filter()
関数を使って、指定したカテゴリ自体を読み込まないようにする方法があります。
CSSで特定カテゴリを非表示にする
CSSで特定カテゴリを非表示にする流れは以下のようになっています。
- カテゴリIDを確認する
- カテゴリIDからクラス名を把握する
- クラス名を指定してCSSで非表示にする
カテゴリIDの確認が必要となりますので、カテゴリIDを確認しておきます。
カテゴリIDは色々な方法で確認できますが、簡単な確認方法として、カテゴリ編集ページから確認したいカテゴリの編集画面を表示します。
その編集ページのURLのクエリにパラメータに「&tag_ID=xxx」というのがあるので「xxx」の部分が、そのカテゴリIDになります。
カテゴリIDを確認したら、CSSにて特定カテゴリの部分を入れたクラス名をセレクタで指定して「display: none」で非表示にします。
CSSで以下のように指定する事が可能です。
.cat-item.cat-item-xxx {
display: none;
}
複数のカテゴリを指定したい場合は複数は以下のように記述していきます。
.cat-item.cat-item-xxx, .cat-item.cat-item-xxx {
display: none;
}
サイドバー以外でもカテゴリウィジェットを使っている場合で、非表示にするカテゴリをサイドバー内に限定したい場合は、以下の様に記述してサイドバーに限定します。
#sidebar .cat-item.cat-item-xxx {
display: none;
}
上記の指定方法でカテゴリリストから消えない場合、カテゴリリストのデザインによっては<a>
タグの指定も必要かもしれません。
.cat-item.cat-item-xxx a {
display: none;
}
add_filter()関数を使って特定カテゴリを読み込まない様にする
こちらはウィジェットのカテゴリが一覧を読み込む際にadd_filter()
関数を使って特定のカテゴリを除外させる方法になります。
この方法の流れは以下のようになります。
- function.phpにadd_filter()関数の「widget_categories_args」を記述する
- excludeパラメータにて除外カテゴリのIDを指定する
「function.php」に以下のサンプルコードを記述します。add_filter()
関数の「widget_categories_args」は「カテゴリー」ウィジェットが読み込まれた時に実行されます。
// 指定カテゴリを非表示にする関数
function exclude_widget_categories($args) {
$args['exclude'] = 'xxx';
return $args;
}
add_filter('widget_categories_args', 'exclude_widget_categories');
「exclude」は除外するという意味で、「categories」パラメータにて組み込まれているパラメータになります。
このパラメータの初期値は空です。
複数のカテゴリを除外する場合は、除外するカテゴリIDをカンマで区切って記述していきます。
//指定カテゴリを非表示にする関数
function exclude_widget_categories($args) {
$args['exclude'] = 'xxx, xxx, xxx';
return $args;
}
add_filter('widget_categories_args', 'exclude_widget_categories');
ディスカッション
初めまして、サイドバーにカテゴリを複数設置して(ここではカテゴリ1 カテゴリ2とします)
カテゴリ1では非表示にしたいけど、カテゴリ2では表示したい場合のcssってどんな感じになりますでしょうか?
こんにちわ、CSSでは現在のページのカテゴリを判定できず、難しいと思います。
functions.phpにてin_category()を利用する事で実装可能です。
function exclude_widget_categories($args) {
in_category(‘カテゴリ名’) {
$args[‘exclude’] = ‘非表示にするカテゴリID’;
return $args;
}
}
add_filter(‘widget_categories_args’, ‘exclude_widget_categories’);
in_category(‘カテゴリ名’) {
}
神様、仏様、1-notes様
無事にウィジェットのカテゴリー非表示が実装できました
他サイトに載ってるコードは全部エラー吐いて使えなかったので本当に助かりました。