WordPressのサイトで、人気記事を表示することはよくある機能のひとつです。しかし、プラグインを使わずに自分で実装する方法を知っておくと、より柔軟で軽量なサイトを作成できます。この記事では、プラグインなしで人気記事を表示する方法を解説します。
1. 投稿の閲覧数を管理する
まず、投稿の閲覧数を記録し、それを基に人気記事を表示する方法を説明します。WordPressでは、投稿の閲覧数をカスタムフィールド(メタデータ)として保存する方法を使います。
functions.phpに記述するコード
// 投稿の閲覧数を取得
function getPostViews($postID) {
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if ($count == '') {
return '0 PV';
}
return number_format($count) . ' PV';
}
// 投稿の閲覧数を増加(詳細ページのみ)
function setPostViews($postID) {
if (!is_single()) return; // 記事詳細ページのみカウント
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if ($count == '') {
$count = 0;
}
$count++;
update_post_meta($postID, $count_key, $count);
// キャッシュクリア(反映遅延防止)
wp_cache_delete($postID, 'post_meta');
}
// 隣接する投稿の meta タグを削除(SEO対策)
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
上記のコードをfunctions.php
に追加します。このコードのポイントは、投稿の詳細ページでのみ閲覧数をカウントする部分です。setPostViews
関数でカウントを増やし、getPostViews
関数で閲覧数を取得します。
次に、投稿ページ(single.php
)で閲覧数を増やす処理を呼び出します。
single.phpでのコード例
<?php
if (have_posts()) : while (have_posts()) : the_post();
setPostViews(get_the_ID()); // PVを増やす
?>
<!-- 投稿内容表示 -->
<?php endwhile; endif; ?>
これで、投稿の閲覧数が正しくカウントされます。
2. 人気記事を表示するためのWP_Query
次に、人気記事を表示するために、WP_Query
を使って、閲覧数が多い順に記事を取得します。この部分は、カスタム投稿タイプを使用している場合でも、通常の投稿でも同じ方法を使えます。
archive.php(または表示したいテンプレートファイル)に追加するコード
<?php
$args = array(
'post_type' => 'post', // 通常の投稿の場合は'post'。カスタム投稿の場合は'post_type' => 'カスタム投稿タイプ'
'posts_per_page' => 4, // 表示する記事数
'meta_key' => 'post_views_count', // PV数カウントのカスタムフィールド
'orderby' => 'meta_value_num', // 数値としてソート
'order' => 'DESC', // 降順(PVが多い順)
);
$popular_query = new WP_Query($args);
if ($popular_query->have_posts()) : ?>
<div class="popular-posts">
<?php while ($popular_query->have_posts()) : $popular_query->the_post(); ?>
<div class="post-item">
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail('full'); ?>
<h3><?php the_title(); ?></h3>
<p><?php the_excerpt(); ?></p>
<span><?php echo getPostViews(get_the_ID()); ?> views</span>
</a>
</div>
<?php endwhile; ?>
</div>
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p>おすすめ記事がありません。</p>
<?php endif; ?>
上記のコードは、meta_key
としてpost_views_count
を指定し、これを基に人気記事を表示します。記事のタイトル、アイキャッチ画像、閲覧数を表示する例です。
3. カスタム投稿タイプの場合
通常の投稿だけでなく、カスタム投稿タイプでも同じ方法で人気記事を表示できます。例えば、カスタム投稿タイプが「column」の場合、WP_Query
の引数を次のように変更します。
$args = array(
'post_type' => 'column', // カスタム投稿タイプの場合
'posts_per_page' => 4, // 4件表示
'meta_key' => 'post_views_count', // PV数カウントのカスタムフィールド
'orderby' => 'meta_value_num', // 数値としてソート
'order' => 'DESC', // 降順(PVが多い順)
);
これにより、カスタム投稿タイプ「column」に関する人気記事が表示されます。
まとめ
今回は、WordPressで人気記事を表示する方法を解説しました。プラグインを使わずに、WP_Query
を使って投稿の閲覧数を基に人気記事を表示する方法は、軽量で柔軟性があります。カスタム投稿タイプを使っている場合でも、WP_Query
の引数を調整することで簡単に対応可能です。これを利用して、サイトに合った人気記事の表示を実現しましょう。