WordPressで特定のカテゴリー・タグに属する記事を投稿一覧から非表示にする、特定のカテゴリー・タグを一覧ウィジェットから非表示にする

WordPressで、特定カテゴリーまたはタグに属する記事(投稿)や、特定のカテゴリー・タグを一覧ウィジェットから非表示にさせたい場合のカスタマイズ方法です。どのカスタマイズ方法も”function.php”に記述して下さい。

カテゴリーIDとタグIDの調べ方

前提条件として、カテゴリーIDとタグIDを知る必要があります。

WordPress管理画面の”カテゴリー”または”タグ”のページにアクセスし、該当する”カテゴリー”または”タグ”の編集をクリックしてページ遷移した際に表示されるURLの”tag_ID=”の後ろにある数字が、カテゴリーIDまたはタグIDとなります。

WordPressの投稿一覧で特定のカテゴリーに属する記事だけ非表示にする

WordPressのトップページ(ホームページ)で投稿の一覧を表示させている状態において、特定のカテゴリーに属する投稿を投稿一覧から除外する方法です。

function exclude_category( $query ) {
  if ( $query->is_home() && $query->is_main_query() ) {
    $query->set( 'cat', '-1' );//マイナスをつけてカテゴリIDを除外する
  }
}
add_action( 'pre_get_posts', 'exclude_category' );

複数のカテゴリーを指定する場合は下記のように記述します。

$query->set( 'cat', '-1,-2,-3' );

WordPressの投稿一覧で特定のタグに属する記事だけ非表示にする

WordPressのトップページ(ホームページ)で投稿の一覧を表示させている状態において、特定のタグに属する投稿を投稿一覧から除外する方法です。

function exclude_category( $query ) {
  if ( ($query->is_home() && $query->is_main_query()) ) {
    $query->set( 'tag__not_in', array(1) ); //除外したいタグIDを指定
  }
}
add_action( 'pre_get_posts', 'exclude_category' );

複数のタグを指定する場合は下記のように記述します。

$query->set( 'tag__not_in', array(1,2,3) );

WordPressの”カテゴリー”ウィジェットで特定のカテゴリーを非表示にする

主にサイドバーに設置するカテゴリー一覧で、特定のカテゴリーのみをカテゴリー一覧から除外する方法です。

function customize_category_args( $args ) {
  $args = array(
    'exclude' => '1'
  );//除外したいカテゴリーIDを指定
  return $args;
}
add_filter( 'widget_categories_args', 'customize_category_args' );

複数のカテゴリーを指定する場合は下記のように記述します。

'exclude'  => '1,2,3'

WordPressの”タグクラウド”ウィジェットで特定のタグを非表示にする

主にサイドバーに設置するタグ一覧で、特定のタグのみをタグ一覧から除外する方法です。

function customize_tag_cloud_args( $args ) {
  $custom_args = array(
    'exclude' => '1'
  );//除外したいタグIDを指定
  $args = wp_parse_args($args, $custom_args);
  return $args;
}
add_filter( 'widget_tag_cloud_args', 'customize_tag_cloud_args');

複数のタグを指定する場合は下記のように記述します。

'exclude'  => '1,2,3'


一部の参考サイトでは、受け取った引数”args”に対して除外したいタグIDを指定し、そのまま”return”で返す方法が紹介されていますが、これを行うとスタイルが崩れてしまう為、別の配列を定義した上で結合して返しています。(詳細な理由については記事文末に記載の参考サイトをご参照下さい)


調査にあたり、下記サイトを参考にさせて頂きました。ありがとうございました。

タイトルとURLをコピーしました