WordPressプラグインなしで人気記事リストを表示する方法2パターン

プチ収入

WordPressのプラグインを使わずに人気記事リストを表示する方法を検索すると、たくさん出てきてしまって迷うと思います。そこで私が試してみて気に入った方法を2つ紹介します。

シンプルなコードを好む方に

コードが短くシンプルな方法が良い方は、manablogさんの方法がおすすめです。

dlを使う場合のコード

manablogさんの方法はdivを使っています。そのまま使う場合はコピペでOKです。

STINGER8の最新記事リストがdlタグを使った構成になっているので、人気記事もその形を踏襲すると統一感が出ます。dlを使う場合は下記のコードを参考にしてみてください。

<?php
// views post metaで記事のPV情報を取得する
setPostViews(get_the_ID());
// ループ開始
query_posts('meta_key=post_views_count&orderby=meta_value_num&posts_per_page=5&order=DESC'); while(have_posts()) : the_post(); ?>
<dl class="popularlist">
<dt>
<!-- サムネイルの表示 -->
<a href="<?php echo get_permalink(); ?>"><?php the_post_thumbnail( 'thumbnail' ); ?></a>
</dt>
<dd>
<!-- タイトルの表示 -->
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</dd>
</dl>
<?php endwhile; ?>

正確な人気記事を表示したい方に

より正確な人気記事を表示したい場合は、行き着く先はあんこさんの方法がおすすめです。

ボットのアクセスや管理者のアクセスを除外していることと、ランキング集計期間が24時間になっているのが特徴です。

集計期間を設けないと過去記事が有利になってしまうので、新しい記事も同様に扱いたい人向け。

アクセス期間を変更する場合

24時間毎ではなく1週間毎にしたい場合、時間毎に配列を組んでいるところを曜日毎にし、リセット間隔を1日置きに変更すればできると思います。

単純にリセット間隔を1週間おきに変更するだけでは、リセット前後で集計期間が変わってしまいます。日曜日になったら前週の日曜日のデータを消去、月曜日になったら前週の月曜日のデータを…という動きにならなければ最新の1週間のデータにならないです。(もっと正確に日曜の0時~23時で分けるならリセット間隔は24時間おき、配列は24時間×7日分で分けることになります。)

dlを使う場合のコード

dlを使う場合のコードは下記の通りです。ulを使う場合は行き着く先はあんこさんのコードを参考にしてください。

<?php if( is_single() && !is_user_logged_in() && !isBot() ): //個別記事 かつ ログインしていない かつ 非ボット
set_post_views(); //アクセスをカウントする
endif; ?>
<?php
$args = array(
'post_type'     => 'post',
'numberposts'   => 8,       //表示数
'meta_key'      => 'pv_count',
'orderby'       => 'meta_value_num',
'order'         => 'DESC',
);
$posts = get_posts( $args );
if( $posts ): ?>
<?php foreach( $posts as $post ) : setup_postdata( $post ); ?>
<dl class="popularlist">
<dt>
<a href="<?php the_permalink(); ?>" ><?php the_post_thumbnail( 'thumbnail' ); ?></a>
</dt>
<dd>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</dd>
</dl>
<?php endforeach;
wp_reset_postdata(); ?>
<?php else : ?>
<p>アクセスランキングはまだ集計されていません。</p>
<?php endif; ?>

コメント TwitterやFacebookのアカウントにログインしてコメントできます。