ふと、今まで書いたブログの総文字数をカウントしたくなったので、なんとか出力できないものかやってみました。
ブログの総文字を表示したところで、誰が見るわけでないにしても、書いている側としては励みになるものです。
外的報酬(extrinsic reward)に駆られてブログを書いている人だと、総アクセス数のカウンターや累計シェア数を設置しておくと嬉しいでしょうが、内的報酬(intrinsic reward)に駆られて書いている人は総文字数のカウンターを設置しておくとやる気が出るのではないかと。
このエントリでは、文字数関連のカスタマイズの仕方を色々と調べた結果をまとめておきます。
まずは単一の投稿記事の文字数を一覧で確認したり、それに合わせて、「この記事は何分で読めます」の表示を設置する方法。
そして本題の、ブログ内の全記事の文字数を合算して、ページやウィジェットなどにショートコードで出力する方法についてです。
もくじ
1.投稿一覧に記事ごとの文字数を表示
まずは、各記事ごとの文字数をWordPressの管理画面の投稿記事一覧に表示する方法について。
いろんな方が、方法を公開してくださっていますが、どれもfunction.phpにコードを記述することで、投稿記事一覧画面に、文字数を表示するする列を追加するというものです。
投稿記事本文だけの文字数を取得するものと、投稿記事のタイトルの文字数も取得して二列並べてくれるものとがありますが、どちらでも好きな方を選ぶといいと思います。
WordPressの投稿一覧に本文の文字数とタイトル文字数を表示させる | studio9 personal
WordPress 全記事の文字数を投稿一覧に表示して確認する方法 | クリアメモリ
WorsPressで文字数を数えるにはどうすれば良いのか?? 投稿一覧に文字数を表示してみた
問題は、これらのコードを、どうやってfunction.phpに追加するかです。
親テーマのfunction.phpに記載するにしても子テーマ側に記載するにしても、function.phpを編集するのは、少しでも間違った記述が入り込むと画面がまっ白になってログインできなくなる恐れがあります。
必ずバックアップをとっておくこと、そしてログインできなくなっても、FilezillaなどのFTPソフトでfunction.phpを編集できるような環境を整えておくことが必須です。
そして、親テーマのfunction.phpを編集するのなら、単に上記のリンク先記事のコードを一番下に追加するだけでいいですが、ふだんテーマのカスタマイズをするときは、子テーマ側で編集している人がほとんどだと思います。
子テーマにfunction.phpを作る場合は、他のphpファイルと違って、特殊な作り方をする必要があります。
簡単に言うと、他のファイルとは違って、function.phpという名前をつけて、あとはまっ白のまま何も記述せず、
[code]<?php
//子テーマのCSS読み込み
add_action( ‘wp_enqueue_scripts’, ‘theme_enqueue_styles’ );
function theme_enqueue_styles() {
wp_enqueue_style( ‘parent-style’, get_template_directory_uri() . ‘/style.css’ );
wp_enqueue_style( ‘child-style’,
get_stylesheet_directory_uri() . ‘/style.css’,
array(‘parent-style’)
);
}
//ここに新しく追記
?>[/code]
とだけ記述して、子テーマのフォルダ内にアップロードしておくようにします。そして、WordPressの管理画面のテーマ編集などからコードを追加するときは、真ん中の「//ここに新しく追記」の部分に追加していくようにします。
詳しい事情や作り方などは、こちらのサイトなどを参考にしてください。
【注意】functoins.phpをWordPressの子テーマに追加する場合|PresentNote
functions.phpを使ってますか?WordPress 子テーマの作り方間違ってたのに気づきました。 – ものくろぼっくす
そうやって先程の投稿記事の文字数を表示するコードをfunction.phpに追加したら、ダッシュボードにログインして投稿記事一覧を見ると、各記事ごとの文字数を表示する列が追加されていると思います。
function.phpを編集するのが気乗りしない場合はプラグイン「Posts Character Count Admin」でもほぼ同じことができるようです。
投稿記事の一覧で文字数が分かるプラグイン「Posts Character Count Admin」
2.この記事は何分で読めますを表示(文字数換算)
次に、各記事の文字数を応用して、ときたま見かける、「この記事は何分で読めます」の表示を実装する方法について。
うちのブログは、長い記事ばっかりで、こんなものを導入してしまったら、「この記事を読むには30分もかかります」なんて表示しかねないので試すつもりはありませんが、文字数関連のカスタマイズの参考までに。
こちらもfunction.phpにコードを追加することで実装できます。
WordPress 「この記事は●分で読めます」をプラグインなしで表示させたい時 ? Web雑記帳。
あるいはプラグイン「stimated」などを使う方法もあるようです。
この記事は何分で読めますのプラグインを設定して時間内でシェアをお願いしましょう! | アクセストリガー
注意点として、これは、この記事で紹介しているどの文字数計測にも言えることですが、完全に正確なものではありません。
こちらで説明されていますが、計測方法によってはコード部分も計測してしまったりして、数値が多めに出てしまいます。
「この記事は~分で読めます」のコードがそもそも間違ってる説 & 導入している理由
それに、アフィリエイトで商品を紹介していたりすれば、そのぶんの文字数も合計してしまうので、表示される文字数より、本文コンテンツの実際の文字数は少ないはずです。
気になる人は上の記事の提案に添って、計測方法をもう少し正確になるよう調整してみるといいと思いますが、数値はあくまで目安として考えておくのが無難でしょう。
3.全記事の総文字数をプラグインでダッシュボードに表示(英語)
ここからがいよいよ本題ですが、各記事ごとの文字数ではなく、これまで書いたブログ内の全記事数の合計文字数を取得する方法です。
さっきのカスタマイズで、投稿一覧には記事ごとの文字数が出ているので、それを足していけば一応わかることはわかりますが、それではあまりにめんどくさいですし、リアルタイムで確認できません。
それで、勝手に自動的に合計して出力してくれるものを探してみたところ、英語では、「Dashboard Wordcount」というプラグインがありました。これはダッシュボードにピン止めできる情報に、全記事の単語数の表示などを追加するもの。
Dashboard Wordcount ? WordPress Plugins
しかしながら、これは今書いたとおり、「文字数」ではなく「単語数」なので、日本語だと全然正しく計測できません。うちのブログに入れてみたら、たった5万字とかになりました。
英語でいうところのWord Countは単語数カウントの意味で、文字数だったら、Wordではなく、CharactersかLettersになるはずでず。
Count of All Charactersみたいな名前のプラグインを一応ささっと探してみましたが、特に見つかりませんでした。探し方が悪かったのかもしれませんが。
4.総文字数を出力するショートコードを作成(日本語)
ではプラグインを使わない方法ならあるのかと思って探して見たところ、英語のコードをもとに日本語の文字数計測のコードを作ってくださっている方がいました!
WordPressでブログの総文字数を計算してみた : kosukekato.com : the idea espresso
こちらの方のエントリで書かれているコードを、さっきの方法で、子テーマのfunction.phpの「//ここに新しく追記」の部分に、
//総文字数ショートコード
とでも記述してから、コピーして貼り付けます。
以下上記記事からの引用。
[code]//総文字数ショートコードfunction post_word_count() {
global $wpdb;
$query = “SELECT post_content FROM $wpdb->posts WHERE post_status = ‘publish'”;
$words = $wpdb->get_results($query);
if ($words) {
foreach ($words as $word) {
$post = strip_tags($word->post_content);
$count = mb_strlen($post);
$totalcount = $count + $oldcount;
$oldcount = $totalcount;
}
} else {
$totalcount=0;
}
return number_format($totalcount);
}[/code]
そして最後の
return number_format($totalcount);
}
のすぐ下に、ショートコード化の記述を追加しておきます。
[code]add_shortcode(‘allcount’,’post_word_count’);[/code]この記述の’post_word_count’の部分は、さっきのサイトの方が作ってくれたコードの先頭部分の、
function post_word_count()
に準拠しています。つまりこの記述をショートコードをしますよ、という指定です。
そして’allcount’の部分は、ショートコードを呼び出すときの名前です。わたしは適当にallcountと入れましたが、別になんでもかまいません。
すでにあるショートコードとかぶらないことだけは気をつけないといけないので、今までありそうにない文字列なら任意でいいと思います。
このあたりのショートコード化の説明については、以下のサイトの説明を見て、理解した上で編集することをお勧めします。
WordPressで最も簡単なショートコードの作り方を初心者向けにとっても丁寧に説明します
function.phpの編集はやはり危険を伴うのでバックアップを用意して慎重にやるのを忘れずに。
5.ウィジェットなどに総文字数のカウンターを出力する
これでfunction.phpを保存して特にまっ白になったりおかしくなったりしなければ成功なので、あとは、どこでも好きな場所にショートコードを貼り付けたら、ブログの全記事の総文字数を表示できます。
プロフィールの固定ページに表示するもよし、サイドバーのウィジェットやフッターに書いておくもよし。アクセス数カウンターならぬ、総文字数のカウンターですね。
設置の仕方は簡単、WordPressのショートコードはどれも角括弧 [ ] を使って呼び出せます。つまり、
[◯◯◯]の◯◯◯の部分に、さっきの赤字の部分(わたしの例だとallcount)を書き込めばいいということです。
今この場にそれを記述すると
13,615,447となって、総文字数が表示されますね。
あとはその前後に、「このブログの総文字数は[ショートコード]字です」といった説明でも入れておけば、総文字数カウンターのできあがりです。
「このブログの総文字数は13,615,447字です」
さっきの各記事の文字数と同じく、厳密に正確なものではありませんが、おおよその目安としては便利なのではないでしょうか。
ちなみに、文庫本一冊がだいたい10万字ほどらしいです。もう少し分厚い本だと20万字とかになってくるでしょうか。
そうすると…けっこうわたしもたくさん書いてきたものです(笑)
各記事の文字数を一覧表示するようになってから、どの記事がボリューム不足なのかすぐわかるようになったので、文字数の少ない類似記事同士をマージしてひとつにまとめたり、あまりに内容がない過去記事は非公開にしたりと、ブログの記事を最適化しやすくなりました。
また、総文字数を取得してみて、メインブログだけでなく、適当に書き連ねてきたサブブログが、ほとんど変わらないくらいの文字数になっていることを発見して驚きました。やっぱり客観的な数値で出力されるというのは、とても便利なものです。
最初に書いたように、内的報酬のモチベーションでブログを書いてるような人にはおすすめなので、ぜひトライしてみてください。