WordPressの固定ページでカテゴリーやタグを使えるようにする方法

WordPressの固定ページでカテゴリーやタグを使えるようにする方法

WordPressの固定ページでカテゴリーやタグを使えるようにする方法

WordPressの投稿ではカテゴリーやタグを設定できますが、固定ページでは設定できません。固定ページでもカテゴリーやタグを設定したい、ということもあるかと思います。

そこで今回は、固定ページでもカテゴリーやタグを使えるようにする方法を紹介したいと思います。

固定ページでカテゴリーを使えるようにする方法

固定ページでカテゴリーを利用できるようにするには、利用しているテーマのfunctions.phpに以下のコードを追加します。

// 固定ページにカテゴリーを設定
function add_categorie_to_pages(){
 register_taxonomy_for_object_type('category', 'page');
}
add_action('init','add_categorie_to_pages');

// カテゴリーアーカイブに固定ページを含める
function add_page_to_category_archive( $query ) {
if ( $query->is_category== true && $query->is_main_query() ) {
$query->set('post_type', array( 'post', 'page' ));
}
}
add_action( 'pre_get_posts', 'add_page_to_category_archive' );

これで固定ページにカテゴリーが紐付けられます。

固定ページでタグを使えるようにする方法

固定ページでタグを利用できるようにするには、利用しているテーマのfunctions.phpに以下のコードを追加します。

// 固定ページにタグを設定
function add_tag_to_page() {
 register_taxonomy_for_object_type('post_tag', 'page');
}
add_action('init', 'add_tag_to_page');

// タグアーカイブに固定ページを含める
function add_page_to_tag_archive( $obj ) {
 if ( is_tag() ) {
 $obj->query_vars['post_type'] = array( 'post', 'page' );
 }
}
add_action( 'pre_get_posts', 'add_page_to_tag_archive' );

これで固定ページにタグが紐付けられます。

あとがき

上述した2つのコードを追加すれば、管理画面で固定ページの下にカテゴリーとタグの設定メニューが出てきます。

カテゴリーとタグの設定メニュー

固定ページの編集画面では、カテゴリーとタグのウィジェットも追加されます。

カテゴリーやタグのアーカイブに固定ページを出力したい時なんかは、ぜひお試しください。

この記事が気に入ったら
いいね!してね♪

Twitter で

9 thoughts on “WordPressの固定ページでカテゴリーやタグを使えるようにする方法

  1. へっぽこ

    はじめまして。
    カテゴリーページに同スラッグの固定ページを表示させたいと思って、さまよっておりましたら、こちらに行き着きました。
    固定ページにカテゴリーの紐付けが出来れば、それをカテゴリーページに表示できるのではないかと思ったのです。
    しかし紐付けして、それをどうすれば良いのかが見えてこず…
    もしご存じのことがあれば、ぜひご教授いただければと思った次第です。

    1. himecas Post author

      固定ページにカテゴリーを設定したら、「カテゴリーアーカイブに固定ページを含める」の方のコードもfunctions.phpに追加することで、カテゴリーアーカイブに固定ページが出てくるようになります。

  2. へっぽこ

    回答ありがとうございました。
    その記述はすでにしてあるのですが表示されなくて。
    カテゴリーに属する記事一覧を表示するために、

    <?php
    global $query_string;
    query_posts($query_string . ‘&posts_per_page=5&order=DSCE’);
    ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <li><?php the_title(); ?><?php the_excerpt(); ?></li>
    <?php endwhile; endif; ?>

    というソースを書いています。
    この一覧の中に出てくるのかと思っていたのですが…

  3. へっぽこ

    何ともお恥ずかしい書き間違い…
    ですが、これは関係ありませんでした。
    自力で何とかしようと思います。
    おつきあいいただき、ありがとうございました!

    1. himecas Post author

      まだ見てくれているかわかりませんが、検証してみました。テーマはTwenty Fifteenです。

      ループを以下のように記述すると、ちゃんと固定ページも表示されました。

      <?php if ( have_posts() ) : ?>
      <ul>
      <?php while ( have_posts() ) : the_post(); ?>
      <li>
      <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
      <?php the_excerpt(); ?>
      </li>
      <?php endwhile; ?>
      </ul>
      <?php endif; ?>

      これをcategory.phpなどに記述すればうまくいくと思われます。

      ※「<」と「>」はすべて全角で書いているので、半角にして記述してください。

  4. 匿名

    これで固定ページにカテゴリをつけて、固定ページ一覧から、カテゴリで絞込み検索をすると、「無効な投稿形式。」というエラーが出て、カテゴリでの検索ができませんが、どうやって回避すればいいでしょうか?

    1. himecas Post author

      いくつかの環境で確認してみましたが、問題なく絞り込みもできているので、上記の記述とは別の何かが関係していると思われます。ただ、具体的な要因・回避策は不明です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です