WordPressでプラグインを使わずに関連記事を表示する方法と具体例

テーマ

WordPressサイトにおいて、訪問者の興味を引き続けるために「関連記事」を表示することは重要です。多くのユーザーは、プラグインを使用してこれを実現しますが、サイトの速さやセキュリティの観点からプラグインを可能な限り少なくしたい人もいます。この記事では、プラグインを使わずに関連記事を表示する方法と具体例をいくつか紹介します。

プラグインを使わない理由

WordPressでプラグインを使用することで簡単に機能を追加できますが、プラグインに依存しない方法を選ぶ理由は様々です。たとえば、サイトのパフォーマンスを向上させたい、セキュリティリスクを減らしたい、あるいはコードの管理を自分で行いたい場合などです。プラグインを使わなくても、カスタムコードを編集して同様の効果を得ることが可能です。

関連記事の表示方法

1. サイトのテーマファイルをカスタマイズ

まず、WordPressテーマのファイルを編集して関連記事を表示させる方法があります。これを行うにはいくつかのPHPコードを追加する必要があります。

ステップ1: functions.phpにカスタム関数を追加

最初に、functions.phpファイルにカスタムの関数を追加します。以下のコードはカテゴリを基に関連する投稿を取得するサンプルです。

function get_related_posts_by_category($post_id) {
    $categories = wp_get_post_categories($post_id);
    if ($categories) {
        $args = array(
            'category__in' => $categories,
            'post__not_in' => array($post_id),
            'posts_per_page' => 5,  // 表示する記事の数
            'ignore_sticky_posts' => 1
        );
        $related_posts = new WP_Query($args);
        return $related_posts;
    }
    return null;
}

ステップ2: single.phpに関連記事を表示するコードを追加

次に、single.phpファイルに以下のように挿入します。これは、個別の投稿ページに関連記事を表示するためのコードです。

<?php
if (have_posts()) :
    while (have_posts()) : the_post();

        the_content();

        // Related posts
        $related_posts = get_related_posts_by_category(get_the_ID());
        if ($related_posts && $related_posts->have_posts()) :
            echo '<h2>関連記事</h2><ul>';
            while ($related_posts->have_posts()) : $related_posts->the_post(); ?>
                <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
            <?php endwhile;
            echo '</ul>';
            wp_reset_postdata();
        endif;

    endwhile;
endif;
?>

2. カスタムテンプレートパーツを使用

テンプレートパーツを作成してコードを整理し、再利用可能にすることも良い方法です。たとえば、template-partsフォルダを作成し、その中にrelated-posts.phpのようなファイルを作成します。その中に先ほどの「関連記事」を表示するコードを格納し、テーマの必要とする箇所でget_template_part()関数を使って呼び出します。

related-posts.php内容

<?php
global $post;
$related_posts = get_related_posts_by_category($post->ID);
if ($related_posts && $related_posts->have_posts()) : ?>
    <div class="related-posts">
        <h2>関連記事</h2>
        <ul>
            <?php while ($related_posts->have_posts()) : $related_posts->the_post(); ?>
                <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
            <?php endwhile; ?>
        </ul>
    </div>
    <?php wp_reset_postdata();
endif;
?>

呼び出し方

続いてsingle.phppage.phpなどで以下のように呼ぶことができます。

get_template_part('template-parts/related-posts');

3. カスタムクエリを用いる

前述のカテゴリベースの関連記事の他に、タグやカスタムフィールドを活用することで、関連性を持たせます。以下はタグを基にした方法の一例です。

カスタムクエリを用いた例

function get_related_posts_by_tags($post_id) {
    $tags = wp_get_post_tags($post_id);
    if ($tags) {
        $tag_ids = array();
        foreach($tags as $tag) {
            $tag_ids[] = $tag->term_id;
        }
        $args = array(
            'tag__in' => $tag_ids,
            'post__not_in' => array($post_id),
            'posts_per_page' => 5,
            'ignore_sticky_posts' => 1
        );
        $related_posts = new WP_Query($args);
        return $related_posts;
    }
    return null;
}

4. ウィジェットエリアを活用する

ウィジェットエリアを作成し、そこにカスタムHTMLまたはPHPを追加して関連記事を表示させることも可能です。

注意事項

  1. バックアップを忘れずに: テーマファイルを編集する前に必ずバックアップを取ってください。誤ったコードを挿入すると、サイトが壊れる可能性があります。

  2. テーマアップデートの影響: 子テーマを作成してカスタマイズすることで、テーマアップデートによる変更の影響を回避します。

  3. パフォーマンスとキャッシュ: 大量の関連記事を表示すると、クエリの負荷が増しサイトのパフォーマンスに影響を与えることがあります。キャッシュプラグインを利用するか、表示する関連記事の数を調整してください。

  4. SEO最適化: 適切な関連記事を表示することで、SEOに良い影響を与えられる一方で、内部リンクの最適化も考慮する必要があります。

結論

以上のように、WordPressではプラグインを使用せず関連記事を表示する方法がいくつかあります。カテゴリやタグを利用する方法、カスタムテンプレートを用いる方法などを組み合わせることで柔軟なカスタマイズが可能です。これらの方法を駆使して、訪問者にとって価値のあるブラウジング体験を提供しましょう。