【WordPress】カスタムフィールドを使って関連投稿を表示する方法

【WordPress】カスタムフィールドを使って関連投稿を表示する方法 WordPress

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' => '='
    )
)

このように条件を組み合わせることで、より精度の高い関連投稿を実現できます。

まとめ

カスタムフィールドを使えば、カテゴリーやタグに頼らず、自由な基準で投稿同士を関連付けることができます。用途に応じて表示件数や条件を調整し、ユーザーにとって価値のある「関連投稿」を設計していきましょう。