WordPressでは、同じカテゴリーやタグに基づいて関連投稿を表示することが一般的ですが、より柔軟な制御を行いたい場合はカスタムフィールドを活用するのが効果的です。この記事では、共通のカスタムフィールド値を持つ投稿を「関連投稿」として表示する方法を解説します。
前提:カスタムフィールドの設定
まず、関連性を判定するための共通のカスタムフィールド(例:related_key
)を投稿に設定しておきます。これは Advanced Custom Fields(ACF)などのプラグインで追加しても、WordPress標準のカスタムフィールド機能でも構いません。
カスタムフィールドで関連投稿を取得するコード
以下は、現在表示中の投稿と同じrelated_key
の値を持つ投稿を取得・表示するサンプルコードです。single.php などに設置してください。
<?php
$related_value = get_post_meta(get_the_ID(), 'related_key', true);
if ($related_value) {
$args = array(
'post_type' => 'post',
'posts_per_page' => 5,
'post__not_in' => array(get_the_ID()),
'meta_query' => array(
array(
'key' => 'related_key',
'value' => $related_value,
'compare' => '='
)
)
);
$related_query = new WP_Query($args);
if ($related_query->have_posts()) {
echo '<h2>関連投稿</h2>';
echo '<ul>';
while ($related_query->have_posts()) {
$related_query->the_post();
echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
}
echo '</ul>';
wp_reset_postdata();
}
}
?>
表示のカスタマイズ方法
関連投稿の表示件数やデザインは、posts_per_page
の値やHTMLマークアップを変更することで自由にカスタマイズできます。また、post_type
を変更すればカスタム投稿タイプにも対応できます。
応用:複数のカスタムフィールドを使った絞り込み
さらに高度な関連付けを行いたい場合は、meta_query
に複数の条件を追加することも可能です。
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'related_key',
'value' => $related_value,
'compare' => '='
),
array(
'key' => 'category_code',
'value' => 'A001',
'compare' => '='
)
)
このように条件を組み合わせることで、より精度の高い関連投稿を実現できます。
まとめ
カスタムフィールドを使えば、カテゴリーやタグに頼らず、自由な基準で投稿同士を関連付けることができます。用途に応じて表示件数や条件を調整し、ユーザーにとって価値のある「関連投稿」を設計していきましょう。