WordPress の固定ページに "カテゴリ" や "タグ" を追加する

WordPressのロゴ。

WordPress 4.0 以前のバージョンでは、固定ページにカテゴリやタグを追加することができません。 しかしながら構築するサイトによってはカテゴリやタグ情報を固定ページにも追加する必要があるでしょう。 ここでは固定ページにカテゴリやタグを追加する方法を紹介します。

カテゴリとタグを追加する

カテゴリとタグが利用される場面は大きく2種類です。1つは、そのページにカテゴリ(タグ)情報を追加して示すこと。 もう1つはカテゴリ(タグ)一覧時にそのページを対象とするかどうかを判定する場合です(ようするにアーカイブページでの一覧表示です)。 この2つの動作を固定ページでも実現させることになります。

カテゴリの追加

functions.php に次のようなコードを追加すると、固定ページに "カテゴリ" を追加して、 先に紹介した2つの動作を実現することができます。

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

add_action('pre_get_posts', 'show_categorized_pages_in_archive');
function show_categorized_pages_in_archive( $query )
{
    if($query->is_category && $query->is_main_query())
    {
        $query->set('post_type', array( 'post', 'page', 'nav_menu_item'));
    }
}

init アクションによってテーマの初期化が実行されるとき、固定ページ(page) に対し、タクソノミー(分類方法) category を追加します。 これだけで固定ページでカテゴリを使うことができるようになります。

アーカイブページで一覧できるようにするためには、pre_get_posts アクションの実行時に、固定ページ (page) も取得対象にするように設定します。

タグの追加

カテゴリと同じようにしてタグを追加することができます。注意する点は 'categroy' と同じように 'tag' となるのではなく、 'post_tag' となる点です。

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

add_action('pre_get_posts', 'show_taged_pages_in_archive');
function show_taged_pages_in_archive($query)
{
    if($query->is_tag && $query->is_main_query())
    {
        $query->set('post_type', array( 'post', 'page', 'nav_menu_item'));
    }
}