WordPressで人気の記事を表示させるベストな方法
WordPressで人気記事を表示させるプラグインや、プラグインを使用しないで人気記事を表示させる方法をご紹介します。
コーポレートサイト、ECサイトなど、今やホームページにはブログの運営が欠かせない状況になっています。
ブログ設置でご要望が多いのが「人気記事」の表示です。
人気の記事を表示させる方法はいくつかありますのでご紹介します。
プラグインを使わずにランキング表示させる方法
この方法は、カスタムフィールドにページの表示回数をカウントしていき、カスタムフィールドの数値が多い順に記事を表示させることで、人気記事ランキングを実現させる方法です。
下記のサンプルではカスタムフィールド「cf_popular_posts」にページの表示回数がカウントされるようになっています。
functions.php
function my_custom_popular_posts($post_id) {
$count_key = 'cf_popular_posts';
$count = get_post_meta($post_id, $count_key, true);
if ($count == '') {
$count = 0;
delete_post_meta($post_id, $count_key);
add_post_meta($post_id, $count_key, '0');
} else {
$count++;
update_post_meta($post_id, $count_key, $count);
}
}
function my_custom_track_posts($post_id) {
if (!is_single()) return;
if (empty($post_id)) {
global $post;
$post_id = $post->ID;
}
my_custom_popular_posts($post_id);
}
add_action('wp_head', 'my_custom_track_posts');
後はランキングを表示したい箇所に下記のコードを記述すると、人気の記事が10件表示されます。
PHP
<?php
$args = array(
'meta_key'=>'cf_popular_posts',
'orderby'=>'meta_value_num',
'order' => 'DESC',
'showposts' => 10,
);
$wp_query = new WP_Query( $args );
if ($wp_query->have_posts()) : while ($wp_query->have_posts()) :
$wp_query->the_post();
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; endif; wp_reset_postdata();?>
この方法のメリットは、カテゴリーやタグ、投稿者、投稿日、等々のフィルターでランキングできる点です。
デメリットとしては、記事のランキング表示の際に、全部の記事のカスタムフィールドの数字を読みに行くのでサーバーに負荷がかかります。
ただし記事数10,000以下であれば気にすることはないレベルです。もちろん表示にはキャッシュを利用した方が良いです。
プラグインで人気記事を表示する方法
人気記事を表示するプラグインは多数ありますが、その中でも3つのプラグインがお薦めです。
Simple GA Ranking
Google Analyticsのデータを利用してランキング表示させるため、サーバーへの負荷が無いのが特徴です。記事数が多いブログにお薦めです。
カテゴリーやタグごとのランキングや、デイリーや月間ランキングなども可能です。
表示もカスタマイズしやすいので、どんなデザインにも対応させることができます。
残念なことにGA4には非対応でユニバーサルアナリティックスのみ対応しています。
GA4のみ設定している場合は、下記の図のようにGoogle Analyticsでユニバーサルアナリティックス用のプロパティを用意する必要があります。
WordPress Popular Posts
ランキングプラグインでは最も長く人気があるプラグインで、日本語にも対応しています。
一時期、サーバーへの負荷が高いプラグインとして「Simple GA Ranking」へ移行するユーザーも多くいましたが、キャッシュ機能などが搭載され現在でも人気があるプラグインです。
TOP 10
WordPress Popular Postsと同様のプラグインでキャッシュ機能もあります。
ショートコードを使って簡単に表示させることもできますが、コードをゴリゴリ書いて表示させることもできるので、どんなデザインでも対応させることができます。
例えば、下記のファイル「mod_ranking.php」を用意します。
mod_ranking
<?php
if ( function_exists( 'get_tptn_pop_posts' ) ) {
$settings = array(
'daily' => TRUE,
'daily_range' => 30,
'limit' => 20,
'strict_limit' => FALSE,
);
$topposts = get_tptn_pop_posts( $settings );
$topposts = wp_list_pluck( (array) $topposts, 'postnumber' );
$args = array(
'post__in' => $topposts,
'orderby' => 'post__in',
'posts_per_page' => 10,
'ignore_sticky_posts' => 1
);
$my_query = new WP_Query( $args );
if ( $my_query->have_posts() ) {
while ( $my_query->have_posts() ) {
$my_query->the_post();
echo '<a href="' . get_permalink( get_the_ID() ) . '">';
the_title();
echo '</a>';
wp_reset_postdata();
}
} else {
}
wp_reset_query();
}
?>
あとは表示させたいところに下記を記述するとmod_rankingのファイルが読み込まれてランキングが表示されます。
PHP
<?php get_template_part('mod_ranking'); ?>
カテゴリーやタグ、投稿者、デイリーや月間ランキング、カスタムフィールドの内容など自由度が高いランキング表示ができます。PCとスマフォでランキング件数を変えることもできますね。
ランキングを利用することでサイト内の回遊率を上げることもできるので活用をお薦めいたします。