固定ページでカテゴリーやタグが使えないか?

固定ページには初期設定では、カテゴリーやタグが選択できません。固定ページでもカテゴリーやタグを設定して一覧表示にも表示させたいなーと思い方法を探っていた時のメモ。

固定ページにカテゴリーを追加する

カテゴリーの追加は、functions.phpに以下の記述を追加します。

function add_category_page() {
  register_taxonomy_for_object_type( 'category', 'page' );
}
add_action( 'init', 'add_category_page' );

固定ページをカテゴリーの一覧に表示する

固定ページをカテゴリーの一覧に表示するには、functions.phpに以下の記述を追加します。

function add_category_archive_page( $query ) {
  if ( $query->is_category && $query->is_main_query() ) {
    $query->set( 'post_type', ['post', 'page'] );
  }
}
add_action( 'pre_get_posts', 'add_category_archive_page' );

固定ページにタグを追加する

カテゴリーと同じようにタグの追加は、functions.phpに以下の記述を追加します。

function add_tag_page() {
  register_taxonomy_for_object_type( 'post_tag', 'page' );
}
add_action( 'init', 'add_tag_page' );

固定ページをタグの一覧に表示する

こちらもカテゴリーと同じく固定ページをタグの一覧に表示するには、functions.phpに以下の記述を追加します。

function add_tag_archive_page( $obj ) {
  if ( is_tag() ) {
    $obj->query_vars['post_type'] = [ 'post', 'page' ];
  }
}
add_action( 'pre_get_posts', 'add_tag_archive_page' );

できた!\(^o^)/
気を付けないといけないのが、投稿とカテゴリーやタグを共有するということ。固定ページ独自のカテゴリーやタグを設定したければタクソノミーを使用しないといけないみたい。