投稿、固定ページの閲覧数をカウントして人気記事一覧を作成するプラグインは、「WP-PostViews」や「WordPress Popular Posts」プラグインなど利用されているプラグインが多くあります。
ただ、取得された閲覧数データを簡単に利用することが難しいですね。
閲覧データだけ利用したい場合、どのようにデータを取り出すのかが分かりにくいのです。
その点、、「WP-PostViews」プラグインは、カスタムフィールドに閲覧数が保存されるので直接取り出すことが出来て、テーマに組み込みやすいと思います。
当ページでは、「WP-PostViews」プラグインを利用して、サイドバー用の画像付き人気記事一覧を作成してみようと思います。
WP-PostViewsプラグインのインストールと有効化
管理画面の「プラグインを追加」から、「WP-PostViews」を検索してインストールし、そのまま有効化します。
WP-PostViewsプラグインの設定
管理画面の「設定」−「PostViews」をクリックすると、次の設定画面が表示されます。
特に設定する箇所はありませんが、検索ロボット巡回はカウントしないように設定します。
投稿の閲覧数で記事を並べ替える
「WP-PostViews」プラグインが取得した閲覧数は、次のように「views」の名前でカスタムフィールドに格納されます。
カスタムフィールドの値で記事を並べ替えるには、次の様に記述します。
$args = array(
'post_type' => 'post',
'meta_key' => 'views',
'orderby' => 'meta_value_num',
);
$query = new WP_Query( $args );
では、実際に当サイトの記事を閲覧数の多い順に5記事抽出してみましょう。
<?php
$arg = array(
'post_type' => 'post',
'meta_key' =>'views',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'posts_per_page' => 5
);
?>
<ol>
<?php $the_query = new WP_Query( $arg );
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<li><?php echo the_title( ); ?></li>
<?php endwhile; endif; ?>
</ol>
画像付きで人気記事を表示する
当ページのサイドバーのような人気記事一覧をサムネイル(アイキャッチ画像の)付きで表示してみましょう。
まず、サムネイルの表示ですが、
the_post_thumbnail()
で表示させることができます。
前述の投稿一覧の前に、小さなサムネイルを表示させると
<?php
$arg = array(
'post_type' => 'post',
'meta_key' =>'views',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'posts_per_page' => 5
);
?>
<ol class="p-test">
<?php $the_query = new WP_Query( $arg );
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<li><?php the_post_thumbnail(); ?><?php echo the_title( ); ?></li>
<?php endwhile; endif; ?>
</ol>
当サイトのサイドバーの人気記事は?
当サイトのサイドバーで表示している人気記事も「WP-PostViews」プラグインで取得した閲覧数を基に、抽出して並べ替えています。
※実際はウィジェットとして、表示数等を設定出来るようにしています。
なお、表示用のCSSも例示して起きますので、参考になるといいですね。
<div class="rank-post">
<?php
$arg = array(
'post_type' => 'post',
'meta_key' =>'views',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'posts_per_page' => 5
);
?>
<?php $the_query = new WP_Query( $arg );
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<div class="r-post">
<?php if ( has_post_thumbnail() ): ?>
<div class="img-set"><a href="<?php echo get_permalink(); ?>"><?php the_post_thumbnail(); ?></a></div>
<?php endif; ?>
<h5><a href="<?php echo get_permalink(); ?>"><?php echo the_title(); ?></a></h5>
<p><?php echo wp_html_excerpt(get_the_excerpt(), 50, '・・・'); ?></p>
<div class="clr"></div>
</div>
<?php endwhile; endif; ?>
</div>
文字の大きさや改行幅は適当ですので、利用される場合は調整してください。
.rank-post {
margin-top: 10px;
padding: 0 10px;
overflow: hidden;
}
.rank-post .r-post {
margin-bottom: 10px;
padding-bottom: 10px;
}
.rank-post h5{
display: block;
padding: 0 0 5px ;
font-size: 1em;
line-height: 1.0em;
font-weight: bold;
}
.rank-post .r-post p {
font-size: 0.7em;
line-height: 1.2em;
color: 666;
}
.rank-post .r-post .img-set{
float: left;
margin-right: 8px;
max-width: 120px;
border: 1px solid #CCC;
display: block;
overflow: hidden;
}
このページで表示すると違和感がありますが、サイドバーならうまく収まるかも・・・?
コメントを残す