プラグインなしでWordPressサイトの人気記事一覧を表示する方法

プラグインなしでWordPressサイトの人気記事一覧を表示する方法

プラグインなしでWordPressサイトの人気記事一覧を表示する方法

色んなブログを見ていると、よく人気記事の一覧がサイドバーなどに表示されていることがあります。WordPress Popular Postsなどのプラグインを使えば簡単に実装することができますが、今回はプラグインなしで人気記事を表示させる方法をご紹介したいと思います。

スポンサードリンク

プラグインなしでWordPressサイトの人気記事一覧を表示する方法

まずは、functions.phpに以下のコードを追加します。コピペで大丈夫です。

functions.php
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
function savePostViews($postID) {
$_date = date('Ymd');
$metaKey = 'viewCount';
$count = get_post_meta($postID, $metaKey, true);
if (empty($count)) {
$count = 1;
delete_post_meta($postID, $metaKey);
add_post_meta($postID, $metaKey, '1');
$_SESSION["{$_date}_{$postID}"] = true;
} else {
if (!isset($_SESSION["{$_date}_{$postID}"])) {
$count++;
update_post_meta($postID, $metaKey, $count);
$_SESSION["{$_date}_{$postID}"] = true;
}
}
}

「viewCount」というカスタムフィールドを追加して、ここに閲覧数を格納してカウントしていきます。

続いて、single.phpに以下のコードを追加します。

single.php
1
<?php savePostViews($post->ID); ?>

投稿IDをfunctions.phpで定義したsavePostViews関数に渡すことで、記事毎の閲覧数がviewCountに格納されます。

最後に、人気記事一覧を表示したい箇所に、以下のようなループを記述します。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
<ul>
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'paged' => $paged,
'posts_per_page' => 5,
'post_type' => array('post'),
"meta_key" => "viewCount",
"meta_value_num" => 0,
"meta_compare" => ">",
"orderby" => "meta_value_num",
"order" => "DESC"
);
$wp_query = new WP_Query($args);
?>
<?php if(have_posts()): ?>
<?php while(have_posts()): the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php echo get_the_title() ); ?></a>
</li>
<?php endwhile; endif; wp_reset_postdata(); ?>
</ul>

上記では、人気記事トップ5が出力されます。

ループの条件で、meta_keyにviewCountを指定し、降順に並べることで閲覧数の多い順に表示しています。

タイトルやリンクの出力部分は、お好みで変更してください。

あとがき

プラグインを使わなくても意外と簡単に人気記事一覧を実装できちゃいますね。

プラグインを使わずに人気記事を実装してみたいという方は、ぜひ参考にしていただければ幸いです。

この記事が気に入ったら
いいね!してね♪

Twitter で
スポンサードリンク

関連記事

コメントを残す

メールアドレスが公開されることはありません。