人気記事リストの考え方
【宣伝】noteにこっさりしたブログの教科書かきました。
10000文字くらいでスッキリ読める量なので、これからブログを始めようかな〜始めて間もないくらいの方には役にたつ内容ではないかと。無料ね!断然無料ね!値上げもしません。
でまあ、人気記事リストの話です。
結論から言えば、僕の考え方は
- 比較的最近書いた(14日以内)
- で、シェア(Twitter、FB、hatena、pocket)の合計数の多いもの順
という感じで動かしております。
<?php $args = array(
'date_query' => array(
array('after'=>'-2 weeks')//投稿日でフィルター。2週間以内。
),
'posts_per_page'=>'5',//ランキングで表示させる記事の数
'orderby' => 'meta_value_num',//表示順の指定。この場合、数値順
'meta_key' => 'scc_share_count_total',//カスタムフィールドのどの値かを指定
); ?>
<?php $query = new WP_Query( $args ); ?>
<?php if( $query->have_posts() ) : ?>
<ul class="post-list">
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<!--タイトルとか、日付とかのliを放り込む-->
<?php endwhile; wp_reset_postdata(); ?>
</ul>
<?php else : ?>
<?php endif; ?>
↑このまま書いても絶対動かないので、試さないように。
順を追って、お話しします。
公式ソーシャルボタンは重い
これはもう圧倒的です、引くぐらい重い。
とはいえ、公式の強みもあります。それは・・・
だいたいみんな使い方がわかる
ことね。押してどうなるかわからないボタンを人は押さないからね。
しかし、公式は重いっすよ。
SNSカウントキャッシュを復活させる
そこで、ソーシャル系の数値を表示させつつ、動作・表示を軽量化させるのに、このプラグインは最高ですよ。
しかし、Twitterのボタンカウント廃止を受けて、開発者の方も、ユーザーもちょっと困りました。
ツイート数復活の方法
【WordPress】ツイート数が取得できなくなったSNS Count Cacheを「count.jsoon」で復活させる方法
11月21日(土)からTwitterのツイートボタンの仕様が変更され、ツイート数の取得が不可能になりました。
「count.jsoon」というサービスに登録してAPIを使わせてもらいつつ、SNS Count Cacheを少しいじれば、復活という流れ。
「count.jsoon」の返事は数時間できたかな。ぼくのとこは。
人気記事リスト・ランキングの考え方
- 全期間、全記事から閲覧数でランキング ← だいたい同じ記事で固定される。(常連客はクリックしない)
- 全期間、全記事から閲覧数でランキング(View数は隠して、上位10記事位をランダム表示) ← 順番が変わってちょっと新鮮になる。ただだいたい同じ記事で表示される。
- 全期間、今開いている記事と同じカテゴリーのView数が多い順。←雑多な内容を扱うブログだったらなかなか有効なテクニック。
だいたい↑こういうのがベーシックな考え方。
ここに
- 集計期間
- 記事の投稿日時
- SNSのカウント
↑こういう考え方を持ち込んでカスタムすると、けっこう自在に人気記事リストが組めます。
- 集計期間(7日とか1か月とかの期間にすると、けっこう同じ奴が出続ける)
- 記事の投稿日時(記事公開日が●日以内、とかにすると、更新がなくなれば記事リストから記事が消える。直近の記事だけになるので、入れ替わりがけっこう起こる)
- SNSのカウント(はてブ数とか、それぞれのSNSに特化した数値を持っていると、説得力が出る。)
ちなみに表示記事と同じカテゴリーの記事を出すならば
<?php $orig_post = $post;
global $post;
$categories = get_the_category($post->ID);
if ($categories) {
$category_ids = array();
foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
$args=array(
'category__in' => $category_ids,
'post__not_in' => array($post->ID),
'posts_per_page'=> 5, // Number of related posts that will be shown.
'caller_get_posts'=>1
);
$my_query = new wp_query( $args );
if( $my_query->have_posts() ) {
while( $my_query->have_posts() ) {
$my_query->the_post();?>
<?php the_title(); ?>
<?
}
}
}
$post = $orig_post;
wp_reset_query(); ?>
こういう感じかな。
参照元:同じカテゴリーの記事をプラグインなしで表示するWordPress College | WordPress College
SNS Count Cacheで取った数値を使って、記事ランキングを作る
- SNS Count Cacheさんのよいところは、数値をキャッシュさせておいて、ページ呼び出すときにいちいち数値取りにいかないところ
- httpからhttpsへ呼び出し方法が変わっても数値を引き継いでくれるところ
- そして、記事に付与されているカウント数のデータを再利用できるところ
で、記事が持っているカウント数を使って、ランキングを作れるんですよ。
コード自体はプラグイン設定のヘルプの所に載っているけども、
<?php $args = array(
'date_query' => array(
array('after'=>'-2 weeks')//投稿日でフィルター。2週間以内。
),
'posts_per_page'=>'5',//ランキングで表示させる記事の数
'orderby' => 'meta_value_num',//表示順の指定。この場合、数値順
'meta_key' => 'scc_share_count_total',//カスタムフィールドのどの値かを指定
); ?>
<?php $query = new WP_Query( $args ); ?>
<?php if( $query->have_posts() ) : ?>
<ul class="post-list">
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<!--タイトルとか、日付とかのliを放り込む-->
<?php endwhile; wp_reset_postdata(); ?>
</ul>
<?php else : ?>
<?php endif; ?>
scc_share_count_total
の部分をscc_share_count_hatebu
とかにすれば、基準になるSNSを選べます。
ちなみに・・・
mbdbを運営するホシナさんのGistを覗いてみると、
$featured = get_posts( array (
'meta_query' => array (array(
'key' => 'scc_share_count_total',
'value' => '200',
'compare' => '>=',
'type' => 'NUMERIC'
)),
'post_status' => 'publish',
'posts_per_page' => 3,
'orderby' => 'rand'
));
200シェア以上、みたいなシェア数の数値で記事ランキングを出し分けているようです。勉強になるなぁ。ちなちな、表示順はランダム。記事が並んだときの新鮮みって、大事ですからね。
人気記事っていってもいろいろ考え方はあるんだよ
いろいろ試してみて自分にあう理想の人気記事を追求するのも、webマスターとして、ブログ運営の楽しみですね。
人気記事ランキングに変動がなくて、なんとなくつまらないと感じている方は、お試しください。
Google Analytics連携でアクセスランキングを作れる「Ranklet」の汎用テンプレートを作ってみた件
Movable Typeをはじめとして、アクセスランキングを導入しにくいブログやウェブサイトに、簡単にそれを導入できる「 Ranklet [ランクレット]」というのをご存知でしょうか?
便利なブログパーツもあるようですよ、ではでは。
文:シンタロヲフレッシュ
一緒に読んで欲しい記事