WordPressに関して質問です。

固定ページにカテゴリー、タグを設定したいのですがどのような方法があるでしょうか?WordPressのバージョン4.0を想定しています。

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2014/10/20 11:36:39
  • 終了:2014/10/22 13:42:13

ベストアンサー

id:rouge_2008 No.1

rouge_2008回答回数594ベストアンサー獲得回数3512014/10/21 07:03:08

ポイント200pt

「register_taxonomy_for_object_type()」を使って、特定の投稿タイプに指定したタクソノミー機能をつける事が可能です。
固定ページで標準のカテゴリーとタグを使えるようにするには、「functions.php」に次のコードを追加します。

function add_taxonomysupports() {
	register_taxonomy_for_object_type( 'category', 'page' );
	register_taxonomy_for_object_type( 'post_tag', 'page' );
}
add_action( 'admin_init', 'add_taxonomysupports' );



・関数リファレンス/register taxonomy for object type
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/register_taxonomy_for_object_type


※内容ごとにページを分けたいけれど、固定ページにこだわる必要がないという場合は、カスタム投稿タイプを使うといいかもしれません。

・関数リファレンス/register post type
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/register_post_type
※関連付けるタクソノミーは、カスタム投稿タイプ登録時に「taxonomies」パラメータで指定します。

私は使ってませんが、「Custom Post Type UI」を使うとカスタム投稿タイプを簡単に作成できるようです。

・Custom Post Type UI
https://wordpress.org/plugins/custom-post-type-ui/

id:mkusume

ありがとうございました。早速固定ページにカテゴリーを設定したのですがカテゴリーの一覧表示をするとカテゴリーを設定した固定ページが表示されません。function.php等で設定を変更する必要があるのでしょうか?

2014/10/22 09:01:31
id:rouge_2008

標準では投稿タイプが「post」(投稿)に設定されているので、「page」(固定ページ)を追加する必要があります。
カテゴリーアーカイブの記事一覧に含めるには次のコードを追加します。

function archive_filter( $query ) {
  if ( !is_admin() && $query->is_main_query() ) {
    if ( $query->is_category ) {
      $query->set( 'post_type', array( 'post', 'page') );
    }
  }
}

add_action( 'pre_get_posts', 'archive_filter' );

※他の種類のアーカイブに含める場合にも同様にコードを追加する必要があります。
例えば以下のコードは、カテゴリーアーカイブの他に年月日別の何れかのアーカイブの場合に表示するように変更しています。

function archive_filter( $query ) {
  if ( !is_admin() && $query->is_main_query() ) {
    if ( $query->is_category || $query->is_date ) {
      $query->set( 'post_type', array( 'post', 'page') );
    }
  }
}

add_action( 'pre_get_posts', 'archive_filter' );


・関数リファレンス/WP Query タイプ&ステータスパラメータ
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query#.E3.82.BF.E3.82.A4.E3.83.97.EF.BC.86.E3.82.B9.E3.83.86.E3.83.BC.E3.82.BF.E3.82.B9.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF

・プラグイン API/アクションフック一覧/pre get posts
http://wpdocs.sourceforge.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7/pre_get_posts

・条件分岐タグ カテゴリーページ
http://wpdocs.sourceforge.jp/Conditional_Tags#.E3.82.AB.E3.83.86.E3.82.B4.E3.83.AA.E3.83.BC.E3.83.9A.E3.83.BC.E3.82.B8
※各種アーカイブページに関連があるものとして、カテゴリーページからアーカイブページの項目まで参照してみてください。

2014/10/22 12:06:25

その他の回答(0件)

id:rouge_2008 No.1

rouge_2008回答回数594ベストアンサー獲得回数3512014/10/21 07:03:08ここでベストアンサー

ポイント200pt

「register_taxonomy_for_object_type()」を使って、特定の投稿タイプに指定したタクソノミー機能をつける事が可能です。
固定ページで標準のカテゴリーとタグを使えるようにするには、「functions.php」に次のコードを追加します。

function add_taxonomysupports() {
	register_taxonomy_for_object_type( 'category', 'page' );
	register_taxonomy_for_object_type( 'post_tag', 'page' );
}
add_action( 'admin_init', 'add_taxonomysupports' );



・関数リファレンス/register taxonomy for object type
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/register_taxonomy_for_object_type


※内容ごとにページを分けたいけれど、固定ページにこだわる必要がないという場合は、カスタム投稿タイプを使うといいかもしれません。

・関数リファレンス/register post type
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/register_post_type
※関連付けるタクソノミーは、カスタム投稿タイプ登録時に「taxonomies」パラメータで指定します。

私は使ってませんが、「Custom Post Type UI」を使うとカスタム投稿タイプを簡単に作成できるようです。

・Custom Post Type UI
https://wordpress.org/plugins/custom-post-type-ui/

id:mkusume

ありがとうございました。早速固定ページにカテゴリーを設定したのですがカテゴリーの一覧表示をするとカテゴリーを設定した固定ページが表示されません。function.php等で設定を変更する必要があるのでしょうか?

2014/10/22 09:01:31
id:rouge_2008

標準では投稿タイプが「post」(投稿)に設定されているので、「page」(固定ページ)を追加する必要があります。
カテゴリーアーカイブの記事一覧に含めるには次のコードを追加します。

function archive_filter( $query ) {
  if ( !is_admin() && $query->is_main_query() ) {
    if ( $query->is_category ) {
      $query->set( 'post_type', array( 'post', 'page') );
    }
  }
}

add_action( 'pre_get_posts', 'archive_filter' );

※他の種類のアーカイブに含める場合にも同様にコードを追加する必要があります。
例えば以下のコードは、カテゴリーアーカイブの他に年月日別の何れかのアーカイブの場合に表示するように変更しています。

function archive_filter( $query ) {
  if ( !is_admin() && $query->is_main_query() ) {
    if ( $query->is_category || $query->is_date ) {
      $query->set( 'post_type', array( 'post', 'page') );
    }
  }
}

add_action( 'pre_get_posts', 'archive_filter' );


・関数リファレンス/WP Query タイプ&ステータスパラメータ
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query#.E3.82.BF.E3.82.A4.E3.83.97.EF.BC.86.E3.82.B9.E3.83.86.E3.83.BC.E3.82.BF.E3.82.B9.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF

・プラグイン API/アクションフック一覧/pre get posts
http://wpdocs.sourceforge.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7/pre_get_posts

・条件分岐タグ カテゴリーページ
http://wpdocs.sourceforge.jp/Conditional_Tags#.E3.82.AB.E3.83.86.E3.82.B4.E3.83.AA.E3.83.BC.E3.83.9A.E3.83.BC.E3.82.B8
※各種アーカイブページに関連があるものとして、カテゴリーページからアーカイブページの項目まで参照してみてください。

2014/10/22 12:06:25
id:mkusume

確認しました。色々ありがとうございました。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません