EZ-SPARROW > TECH NOTES > WordPressで固定ページにタグをつけ、同じタグのついたページを関連ページとして表示させる

WordPressで固定ページにタグをつけ、同じタグのついたページを関連ページとして表示させる

March 05, 2016 Jul 26, 2018

WordPressで固定ページにタグ付けし、任意のページにそのページと同じタグの付いたページを関連ページとして表示させる方法を紹介する。

例えば、赤ワインというページに「ワイン」とタグ付けし、同じタグの付いたページを、赤ワインページに表示させたいという場合だ。これを固定ページで実現するためにはまず、固定ページでもタグ機能を使えるできるようにする必要がある。

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

以下のコードをfunction.phpに追記

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

続いて、要となる同じタグでループを回すコード。

同じタグのついた固定ページを関連ページとして表示するコード

<?php
  $original_post = $post;
  $tags = wp_get_post_tags($post->ID);
  $tagIDs = array();
  if ($tags) {
    $tagcount = count($tags);
    for ($i = 0; $i < $tagcount; $i++) {
      $tagIDs[$i] = $tags[$i]->term_id;
  }
  $args=array(
  'tag__in' => $tagIDs,//指定した複数のタグ(表示するページのタグ) のいずれかを含む投稿のみを表示
	  'post__not_in' => array($post->ID),//表示中のページを除外
	  'posts_per_page'=>'12',//投稿表示数
	  'post_type' => 'page',//投稿タイプ array('post','page')なども使える
	  'orderby'    => 'menu_order',//並び順
	  'order'      => 'ASC'//降順か昇順か
  );
  $my_query = new WP_Query($args);
  if( $my_query->have_posts() ) {  ?>
<?php while ($my_query->have_posts()) : $my_query->the_post();//ループのスタート ?>
<?php endwhile; wp_reset_query(); ?>
<?php } else { ?>
<?php } }?>

さらに、応用編で固定ページに任意のカスタフィールドの値で、関連ページとして表示させるかを選択したい、というケース。

固定ページでタグ+カスタムフィールドの値で条件分岐させ関連ページとして表示する

上記のコードに以下を追加すればOK。

	  'order'      => 'ASC',//降順か昇順か
	  'meta_key' => 'カスタムフィールド名',//指定したカスタムフィールド
	  'meta_value' => 'カスタムフィールドの値',//上記カスタムフィールドの値

RELATED POSTS