WordPress Plugin: Get Recent Comments at Bitte keine heiße Asche einwerfen
サイドバーにウィジェット(Widget)でコメントを表示するプラグイン(plugin)として、古くから存在しているGet Recent Commentsを紹介したい。WordPressのデフォルトでもウィジェットに最近のコメントを表示することはできる。しかし、コメントとトラックバックを分けて表示することはできないし、最近のコメントを最大でも15件までしか表示できない。
Get Recent Commentsというこのプラグインを使用するとコメントとトラックバックを分けて表示できるし、表示項目を自由に変更もできるようになる。大変便利なコメント表示プラグインなのでブログではぜひ使用したいところだが、デフォルトでは文字化けが発生したり、ウィジェットの更新時にタイトルがおかしくなる、などの問題がある。ここではGet Recent Commentsの修正方法とともに導入の仕方を見ていきたい。
ダウンロード
まずはGet Recent Commentsを入手しよう。ダウンロードはWordPressのプラグインディレクトリから行える。最新バージョンは2.0.2でWordPress 2.3以上を使用している場合はこの最新バージョンを使用すればいい。ダウンロードが済んだら、圧縮ファイルを解凍してget-recent-commentsディレクトリにある、get-recent-comments.phpを編集しよう。編集箇所は以下の2点だ。
文字化けの修正
デフォルトのコードのままだと、Get Recent Commentsはマルチバイトの文字をきちんとカウントできないためにコメントの文字数によっては文字化けしてしまう。これを回避する方法が1487行目あたりにある下記のkjgrc_excerptという関数を変更する(参照:Recent Commentsの修正 – Binsan’s Cafe)。どこを変更しているかというと、if (strlen($text) > $length) {の後に分岐を加えている。mb_strimwidthという関数があれば、マルチバイトの文字数でコメントを丸めて文字化けなく表示してくれるようになる、というものだ。(文字化けがこれだけでは直らないかもしれない。Get Recent Comments を日本語対応も参照してほしい)
function kjgrc_excerpt ($text,$chars_per_comment,$chars_per_word,$tag,$output) { $length = strlen(str_replace($tag,"",strip_tags($output))); $length = $chars_per_comment - $length; $length = $length -2; // we will add three dots at the end if ($length < 0) $length = 0; if (strlen($text) > $length) { if (function_exists('mb_strimwidth')) { $text = mb_strimwidth($text, 0, $chars_per_comment, '...', 'utf-8'); } else { $text = substr($text,0,$length); $text = substr($text,0,strrpos($text,' ')); // last word exceeds max word length: if ((strlen($text) - strrpos($text,' ')) > $chars_per_word) { $text = substr($text,0,strlen($text)-3); } $text = $text . "..."; } } #$text = "[EXCERPT]: '$text'"; return "$text"; }
ウィジェットの更新時、%BEG_OF_TITLE%Recent Comments%END_OF_TITLE%となる不具合
上記の文字化けの問題に加えて、キャッシュを使用している(デフォルトの設定)と、ウィジェットの更新時にコメントのタイトルが、%BEG_OF_TITLE%Recent Comments%END_OF_TITLE%のように表示されてしまうという不具合がある。これはキャッシュを使用しないように設定するか、Get Recent Commentsの設定を更新するとタイトルが正常に表示されるようになる。
Get Recent Commentsの設定にあるMiscellaneous Optionsにてキャッシュを使用しないように設定すればウィジェットの更新時にタイトルがおかしくなることはなくなるが、キャッシュは利用したいところだ。そこで、なんとかする方法を下記に示す。691行目あたりにあるkjgrc_use_cacheという関数に1行加えてある。ウィジェットの更新時にはキャッシュを使用しないという処理を加えている。
function kjgrc_use_cache() { if( strstr($_SERVER['REQUEST_URI'], 'wp-admin/widgets.php') ) return 0; add_option('kjgrc_use_cache',1); return get_option("kjgrc_use_cache"); }
使用方法
上記2点の修正が済んだら、wp-content/pluginsディレクトリにファイルをアップロードして有効化しよう。サイドバーに最近のコメントやトラックバックをウィジェットで表示する場合は、管理メニューのテーマにあるウィジェットを表示し、Get Recent CommentsまたはGet Recent Trackbacksを追加しよう。タイトルは自由に変更してほしい。以上でサイドバーにコメントがきちんと表示されるようになるはずだ。
設定項目
管理メニューの設定にあるRecent Commentsで各種設定を行うことができる(余談だが、Lighter Menusという管理メニューをドロップダウン形式で表示するプラグインを使用し、サブメニューを表示しないように設定していると設定項目のリンクが表示されないので注意したい)。コメントやトラックバックの設定では、表示数、コメント文字数を決めたり、マクロで表示形式を自由に設定できたりする。またコメントを表示しないカテゴリを指定したり、アバターの設定ができる。詳細なヘルプがついているので参照するとよいだろう。なお、サイドバーにウィジェットを使用しない場合には、ヘルプにあるコードを参考に直接sidebar.phpに書けばよいだろう。
今回は、最近のコメントやトラックバックをサイドバーに表示するのに最適なプラグインであるGet Recent Commentsというプラグインを紹介した。2点ほど修正が必要だが、大変便利なプラグインなのでブログの運営にはかかせないプラグインだろう。是非参考にしてほしい。
追記:最新版の2.0.6ではマルチバイト対応がなされているので、上記の修正を加える必要はないだろう。
Pingback: Get Recent Comments - : 身延の風
Pingback: Get Recent Comments:タイトルの不具合を修正 | WordPressやら何やら
Pingback: コメントとトラックバックを分けてサイドバーに表示 | Littlestar.Blog
Pingback: Get Recent Comments:タイトルの不具合を修正 | WordPressやら何やら
Pingback: つめもよう » Wordpressプラグイン使っているもの一覧
大変参考になりました。
ありがとうござます。
ようやくまともなコメント欄を設置することができました。
また、遊びにきます♪
Pingback: Get Recent Comments-文字化け解消 | I reach towards the sky
質問させて下さい。
「Comments」内の「Group comments by Posting」で、好きな形に修正し、保存しましたが、その内容というのは、一体どこの場所(ファイル?)に保存されるのでしょうか。
MySQLなど色々と探しましたが、見当たらず、どこかのファイルに上書きされているのかと思っておりまして。。。ずっと探していましたが不明で行き詰っております。
まだまだ初心者でして、どうかご返答の程、よろしくお願いいたします。
Pingback: [wordpress]「こんちくわのぶろぐ(仮)」で使用しているWordpressプラグインまとめ | こんちくわのぶろぐ