WordPress のプラグイン無しですごく簡単に記事を読む時間表示しよー

興味は些細なことから…

「この記事は約 5 分で読めます。」みたいなのを最近?ブログとかでよく見かけますよねー?
すみません、あまり見た記憶なかったです><
冒頭から嘘言いましたが、これを当ブログでも表示させたかったんです〜w

きっかけは以下の記事です!

http://www.ideaxidea.com/archives/2010/07/reading_estimates.html
たった一行追加するだけでサイトの滞在時間を13.8%伸ばす方法・・・ | IDEA*IDEA

「この記事は約 5 分で読めます。」みたいなのを表示するだけで滞在時間が 13.8% も伸びるならやってみたい!と、随分前に思っていました。本当だったらやらないと損そん〜w

具体的な方法!

思い付いてっから結構時間が経っていますので、どうやれば良いのか方法は考えていたのですが WordPress 上でプラグイン無しで簡単にやりたかったので実行に移せていなかったのですが、最近 $content を学習したのでさっそくやってみたいと思います!

人間が文字を読む速度…

まず人間が文字をどの位の速度でどの程度の量を読めるのか分からなかったので調べてみました!
色々と調べてみましたが、やはり個人差があるようで正確な数値はでません。

http://mytown.asahi.com/areanews/yamaguchi/SEB201009140011.html
asahi.com : 「眺める」のがコツ? 脳に活力、記者が「速読」体験 – マイタウン山口
一般的には400~600字と書いてあります。

読書速度測定
読書速度測定
わたしも何回か計ってみました。大体 500 〜 600 文字程度で一般みたいです。って、ことで考えながら読むことを考えてキリ良く 500 文字にしてみます。

肝心のコードを書こー!

書いてみたらすぐ出来たのでとりあえず載せます!
いつもと同じで functions.php に書く関数にしていますよー!

1
2
3
4
5
function countdown($content){
	$count = round(mb_strlen(strip_tags($content)) / 500);
	return '<p class="countdown">このポストは約 '.$count." 分で読めます。</p>".$content;
}
add_action('the_content','countdown');

5 行で書けました〜w
もっと早くやっていれば良かったですねw
functions.php にコピペしてみてください!
記事の先頭に表示されますので楽ですよー!
CSS やタグを変更したりしてみてくださいね!

コードの説明!

一応説明しますと $content には single.php などで使う the_content() で表示されてる記事のソースが入っています。その記事のソースには HTML タグも含まれているのでまず strip_tags() でタグを除去しています。
次に mb_strlen() で文字数を数えて、それを 500 文字で割って分にしています。
round() で半端を丸めて $content の前に結合させて表示させています!

本当に簡単にできました〜w(手抜きですけどw)
是非使ってみてくださーい!

追記です!

色々とわたしが手抜き記事書いたので、みなさんに一手間かけていただくことになりましたのでフィードバックさせていただきたいと思います。
それとブログにまで書いていただいてありがとうございます><っ

0分になるよ!

そぷさん、できパソさんのブログで書いていただいているとおり、上のコードで短い記事だと0分になってしまいます〜w
ほんと手抜きですみません〜w

http://soplog.skr.jp/web/wordpress-countdown01.html
TLで回ってきた“記事を読む時間の表示”を早速試してみた。 | そぷログ

http://www.dekipaso.com/info/wordpress-post-readtime.html
WordPressで「この記事は○分で読めます。」の一文を実装 : できパソ

0分にならないコード!

一応その部分を考慮したコードを書かせていただきます!
できパソさんの方でも0分にならないコードを書いていただいていますので、参考にしてみてくださいw
できパソさんのコードの真似ですよー!

1
2
3
4
5
6
// 記事本文の前に記事文字数と読む時間を表示する
function countdown($content){
	$count = floor(mb_strlen(strip_tags($content)) / 500) + 1;
	return '<p class="countdown">この記事は約 '.$count.' 分で読めます。</p>'.$content;
}
add_action('the_content','countdown');

小数点は floor で切り捨てして1足しています!
これで0にはならないはずですw

読めます → 読めましたか?

これもアイデアですね〜w
面白いです〜w
nully さんのブログで jQuery を追記して例えば「この記事は1分で読めます。」をアクセスしてから1分経過すると「この記事は1分で読めます。読めましたか?」と動的に変化するみたいです!
しゅ、しゅごい!

http://blog.nully.org/2011/04/14/display-reading-time-and-confirm-message-for-wordpress/
[WordPress] 読む時間を表示して、読めたか確認する |Nullyのぶろぐ