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