ブログ運営

WordPressでプラグインなしで人気記事ランキングを作るまで

投稿日:

スポンサーリンク

f:id:masa381man:20160307225919j:plain

こんにちは。
302inc.の宮地です。

弊社では、福井のメディアサイト「フクブロ」を運営しています。
こちらは、全てWordPressで制作しています。
WordPressの組み込み自体はそんなに難しくないのですが、
どうしても、人気記事ランキングの実装だけが、かなり四苦八苦しました。

人気記事ランキングを作るプラグイン

人気記事ランキング。
大抵、ブログサイトには、
サイドバーに人気記事ランキングを置いています。
おそらく、ほとんどがプラグインで回していると思うのですが、
代表的なのが、
「WP-PostViews」
「WordPress Popular Posts」
の2つのプラグイン。

これを入れれば、基本的な人気記事ランキングは、
何の苦なくいれこむことが可能です。

しかし、プラグインは、便利な半面カスタマイズがしづらく、
WP-PostViewsは、
サムネイルの表示やカテゴリ出力に難があり、
WordPress Popular Postsは、
HTMLマークアップ欄があるなど、
カスタマイズに優れていますが、今回実装したい形ができなかったので、
どちらも使わない結論に至りました。

人気記事ランキングの機能

フクブロに設置したい人気記事ランキングは、
<a>のリンクタグでランキング自体を囲み、
サムネイル、順位、所属カテゴリ、記事名
を出力すること。
WordPress Popular Postsでは、
<a>タグをマークアップすることが難しく、
カテゴリや記事名にそれぞれリンクが貼られるため、
使用は難しいと判断しました。
プラグイン自体を改造すればできないことはないのでしょうが、
そこまでの知識はないので断念です。

ということで、プラグインなしで実装する方法を模索しなければいけないのですが、
なかなか検索しても出てこないのです。
大抵、上記2つのプラグインを使う前提でやられており、
望む結果が出てきません。

Google AnalyticsのAPIを使う方法など、
ないことはないのですが、
プログラムの知識皆無の僕にとって、
かなり試行錯誤で、つまづき、その方法も捨てました。
おそらく、この辺りわかる人ならちゃっちゃとやれるんだろうなぁ、、、と思いつつ。。。

WP-PostViewsを使えばできる

そんな時、ひとつの光が見えます。

WP ページビューを統計して自由にランキング表示 WP-PostViews

な、なんと・・・!
WP-PostViewsでは、投稿した記事に、
新しく「views」というカスタムフィールドが生成されます。
この「views」というカスタムフィールドに、
記事の閲覧カウント数を保存しているので、
要は、それを呼び出せばいい、と。

すなわち、
あくまで、「WP-PostViews」のプラグインは、
記事ランキングを表示するのではなく、閲覧数を保存するキーを作るために使う。

完全に盲点でした。
このプラグイン自体も、生成したカスタムフィールドを呼び出して使ってるんです。
だから、自由に記事ランキングを作る際も、そのカスタムフィールドを呼び出してあげればいい。

ということで、

<?php
$args = array( 'posts_per_page' => 10,
'orderby' => 'meta_value_num',//meta_valueではないので注意
'meta_key' =>'views',
'order' => 'DESC',
);
$my_query = new WP_Query( $args );
if($my_query->have_posts()) : while($my_query->have_posts()) : $my_query->the_post(); ?>
<article class="rank_box clearfix">
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" class="clearfix">
<div class="figure"><?php the_post_thumbnail('サムネイル呼び出し'); ?></div>
<div class="text">
<div class="spec clearfix">
<div class="number"><?php echo $my_query->current_post+1; ?></div>
<div class="cat <?php
$cats = get_the_category();
$cat = $cats[0];
if($cat->parent){
$parent = get_category($cat->parent);
echo $parent->slug;
}
else{
echo $cat->slug;
}
?>"><?php $cat = get_the_category(); ?><?php $cat = $cat[0]; ?><?php echo get_cat_name($cat->term_id); ?></div>
</div>
<h6><?php the_title(); ?></h6>
</div>
</a>
</article>
<?php endwhile; endif; wp_reset_postdata(); ?>

ができました。
カウント数を呼び出す場所は、

<?php
$args = array( 'posts_per_page' => 10,
'orderby' => 'meta_value_num',//meta_valueではないので注意
'meta_key' =>'views',
'order' => 'DESC',
);

です。
10件表示で、viewsを呼び出していることがわかります。
その下のカテゴリの箇所は、
カテゴリのスラッグをclassにあてているので、
それを呼び出す箇所です。

<?php echo $my_query->current_post+1; ?>

これで順位を1~10で表示させてます。

以上、これで無事人気記事ランキングを出力することが出来ました。
無駄な記述があると思いますが、
それはご愛嬌ということで。。。

よく読まれている記事

人気記事

1

Amazonといえば今や知らぬ人のいない巨大企業であり、世界的なショッピングサイトです。書籍のみならず日用品から家具まで、大変に幅広い商品を扱っているのが大きな魅力です。 ただAmazonの魅力は、A ...

2

インターネットへの接続がどこでも可能になるポケットWiFi(モバイルWiFi)。現在、さまざまな機種が存在しているため、どれを選んだら良いの?と悩んでいる人も多いのではないでしょうか。 通信速度制限、 ...

3

iPhone 8やiPhone Xの登場で一気に注目を集めたワイヤレス充電。 そもそもワイヤレス充電はAndroidスマホで既に出ており、Apple純正以外にもiPhone 8やiPhone Xで使え ...

4

ここ1~2年で一気に音楽聴き放題サービスが増えてきて、音楽を買ったり借りたりするよりも聴き放題で聴いている、という方も多いのではないでしょうか。 音楽聴き放題は様々なサービスが展開されているのですが、 ...

5

映画やドラマ、アニメなどのビデオコンテンツが見放題になる動画配信(ストリーミング)サービス。国内ではここ数年で一気に知名度が上がり、気になっている人も多いのではないでしょうか。 選ぶポイントとしては月 ...

-ブログ運営

Copyright© みやちまん.com , 2018 All Rights Reserved.