WordPress コメント表示に Get Recent Comments を使ってみる
WordPress 2009/5/18 03:26glossyblue のテーマをカスタマイズさせてもらって使っているのですが、どうもコメントの引用がおかしい。文末が文字化けしてるのだ。きっとマルチバイト文字に対応していないんだと思ってはいたんだけれど、ほったらかしにしてあったのだが、気になって調べてみた。
glossyblue のテーマのコメント表示には、footer.php に src_simple_recent_comments() という関数が使われていて、調べてみてもどんな関数かいまいちわからない。でも、src_simple_recent_comments() の前後をよく見てみると、直前で「simple_recent_comments.php」を読み込んでいることがわかった。このファイルで、コメント者とその概要を表示していたのだ。それが、マルチバイトに対応していないみたい。
ということで、違う方法で最近のコメントを取り出す方法を模索していると、Get Recent Comments というプラグインに辿り着いた。以下の記事が参考になりました。
→Trash can::ver.2:Get Recent Commentsを入れてみた
プラグインをインストールして有効化。テーマ footer.php の該当箇所を以下に書き換え。
<?php if (function_exists('get_recent_comments')) { ?>
<h4><?php _e('最近のコメント'); ?></h4>
<ul>
<?php get_recent_comments(); ?>
</ul>
<?php } ?>
設定→Recent Comments から、最近のコメント(Comments)の設定をする。英語の設定項目を訳してみた。
- Show the most recent: コメント表示件数
- Long comments are chopped off at: 長いコメント本文から抜粋文字数
- Wrap long words at:長い単語の改行位置
- Template:テンプレートの設定
- Exclude comments by blog authors (your own comments)
- Show Comments and Trackbacks/Pingbacks together
- Group comments by Posting
- Limit number of comments per post:
ブログ筆者のコメントを除く
コメントとトラックバック・ピンバックを一緒に表示する
投稿ごとにコメントをまとめる
1ポストあたりのコメントの上限:
管理画面で以下の項目が設定できる。これなら、Recent Comments(最近のコメント)のカスタマイズも自由自在だ。
- %comment_excerpt – Shortened comment. 短縮されたコメント
- %comment_link – Link to the comment. コメントへのリンク
- %comment_author – Name left by the commenter コメント者名
- %comment_date – Date of comment コメント日
- %comment_time – Time of comment コメント時間
- %comment_type – Comment, Trackback or Pingback コメントまたはトラックバック、ピンバック
- %time_since – Time since comment was posted コメントされてからの時間
- %userid – UserID of the commenter コメント者のユーザーID
- %gravatar – Gravatar of the commenter, full img tag コメント者のGravatar、完全なimgタグ
- %gravatar_url – Gravatar of the commenter, only url コメント者のGravatar、URLのみ
- %profile_picture – URL of profile picture プロフィール写真のURL
- %author_url – URL of author or trackback コメント者のURLまたはトラックバックURL
- %author_url_href – href=”%author_url” or empty href=”%author_url” または空白
- %post_title – Title of the posting 投稿のタイトル
- %post_link – Link to the posting 投稿へのリンク
- %post_date – Date of the posting 投稿日
- %post_counter – Number of comments to this post 投稿に対するコメント数
でも1つ困ったことが。それは、「%comment_excerpt」でコメントの抜粋をすると、日本語だと単語区切り(スペース)がないので、改行までが long word として扱われて「Long comments are chopped off at」の設定がうまく効かない。気にしなければそれまでなんだけれど、気になったのでちょっと小細工してみました。
まず、「Wrap long words at」を「1」に設定する。そうすると、1文字ずつ半角スペースが入った状態で表示されますが、「Long comments are chopped off at」の文字数通りにコメントが抜粋されます。
1文字置きにスペースが入ったままでは間抜けなので、スタイルシートの該当箇所に「letter-spacing: -0.3ex;」とつけました。かなり強引。
本当は PHP で半角スペースを除外する方法があればいいんだけれどねぇ。「get_recent_comments();」の戻り値は PHP で処理できる値なんだろうか。もし知っている方いらっしゃったら教えてください。

Get Recent Commentsで同じ問題に悩み、mb_strimwidthあたりでプラグインを改造しようと思ったのですが、ここの訳と裏技でプラグインを改造せずに済みました。ありがとうございました!
◇さまさん◇
コメントありがとうございます。
かなり強引な方法ですがお役にたててなによりです。
WordPressは英語圏のシステムなので往々に起こるけれど
仕方のないことですよね。
(プラグインの作者の方にまでそれを求めるのは酷な気がします。)
なんとか切り抜けていかなければ!