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' => 'カスタムフィールドの値',//上記カスタムフィールドの値