WordPressのカスタム投稿で、カスタムタクソノミーの特定のタームを対象から除外する方法についてご紹介します。

ターム一覧から特定のタームを除外

まずは、カスタムタクソノミーのターム一覧から、特定のタームを除外する方法から。

PHP

$args = array(
  'exclude' => array(16), //除外したいタームのIDを指定。
);

$terms = get_terms('news_cat', $args);
foreach ( $terms as $term ) {
  echo '<li><a href="'.get_term_link($term).'">'.$term->name.'</a></li>';
}

ターム一覧の出力方法についてはこちらの記事で紹介しています。

excludeパラメータ

get_terms()関数の第二引数に入れる配列に、excludeパラメータの指定をしてあげるだけです。
excludeパラメータには除外したいタームのIDを指定します。
カンマで区切ることで、複数のタームIDを指定することも可能です。

$args = array(
  'exclude' => array(16), //除外したいタームのIDを指定。
);

タームIDの調べ方

WordPressのデバッグ関数であるvar_dump()を使用すると、タームIDを調べることができます。
get_terms()関数で取得したタームの情報をvar_dump()で調べます。

$terms = get_terms('news_cat', $args);
var_dump($terms);

すると、以下のような配列が出力され、term_idの値を発見できます。

Image from Gyazo

記事一覧から、特定のタームの記事を除外

次は、カスタム投稿タイプの記事一覧から、特定のタームに属する記事を除外する方法についてです。

PHP

'tax_query' => array(
    array(
        'taxonomy' => 'news_cat', // カスタム投稿タイプ
        'field' => 'slug', // タームの種類
        'terms' => 'others', // 除外したい記事のタームを指定。
        'operator' => 'NOT IN', // termsで指定したタームを除外。
      )
    ),

tax_queryパラメータ

クエリにtax_queryパラメータの指定を行います。
下記4つのパラメータの指定が必要です。

  • taxonomy … カスタム投稿タイプ
  • field … タームの種類
  • terms … 特定のタームを指定
  • operator … 表示の有無

まとめ

以上、WordPressのカスタム投稿で、カスタムタクソノミーの特定のタームを対象から除外する方法についてご紹介しました。