最近のコメントとトラックバックをサイドバーに表示するプラグイン[WP]
- 2008-04-04
- WordPress
すっかり忘れていましたが、最近のコメントとトラックバックをサイドバーに表示してみました。使用したプラグインはCommented entry list。簡単に表示できるのでWordPressを使用している方は使ってみてはいかがでしょう。
ダウンロード → Commented entry list Plugin:Hirobee’s Trail [Memorandum]
※WordPress2.3.3/2.5で確認済み
注意:このプラグインですが、配布ページによってファイルのバージョンが違うようです。(何回ソースと記事を書き直したことか・・・)。そのため記事にて表示している行数などが多少ズレていることがありますので、ご了承下さい。当ブログで説明しているバージョンはcommented-entry-list_1.2.zipです。
Commented entry listの導入方法
- 上記ページのアーカイブをダウンロードからcommented-entry-list_1.2.zipをダウンロード
- 解凍してwp-content/pluginsにcommented-entry-list.phpをアップロード
- ※デフォルトテーマを使用している場合はcomments.phpを入れ替え
- 指定されたコードをサイドバーテンプレートなどに挿入
- プラグインを有効化
※vicunaCMSなど、既にコメントとトラックバックが別々に表示されているテーマの場合は、入れ替えの必要はありません。
表示したいテンプレートに以下のコードをそれぞれ挿入。
<?php get_recently_commented(10); ?> <?php get_recently_trackbacked(10); ?>
上がコメント表示用で下がトラックバック表示用。数字の部分で表示数の制限ができるので、自分の環境に合わせて設定して下さい。例として、当ブログ(vicunaCMS使用)のサイドバーに挿入したコードを記述しておきます。
<dt>最近のコメント</dt> <dd> <ul><?php get_recently_commented(8); ?></ul> </dd> <dt>最近のトラックバック</dt> <dd> <ul><?php get_recently_trackbacked(8); ?></ul> </dd>
投稿者名やサイト名の文字数を制限する場合は、commented-entry-list.phpの43行目、83行目付近にある下記コードの数字部分をそれぞれ変更。
.tkzy_get_comment_author_link($comment,20).
コードの修正
テンプレートによってはコメントとトラックバックに設定されているIDが違うので、commented-entry-list.phpを修正します。この部分を修正しなければ、該当コメントやトラックバックへきちんとリンクが貼られないので必ず確認下さい。
$permalink = get_permalink($comment->ID)."#commentlist"; $permalink = get_permalink($comment->ID)."#trackbacks";
29、69行目付近にある上記コードの#○○部分をご使用テンプレートに合わせて修正。当ブログの場合は #comments と #trackback になります。
$commentid = get_permalink($comment->ID)."#comment-".$comment->comment_ID;
36、76行目付近にある上記コードの #comment- 部分を修正。ハイフン(-)がいらない場合があるので、その場合は削除。また、トラックバックは記述が違う場合がある。当ブログは36行目を#comment、76行目を#pingと書き換え。
詳細な設定と文字化け対策
細かいカスタマイズについては配布元の説明がちょっとわかりにくかったので、こちらのブログの記事を参考にさせて頂きました。
参考サイト:A-k ~the ark~ by kentarou
表示されたタイトルとコメントをクリックするとそれぞれの該当部分に飛びますが、デフォルトでは投稿者名に投稿者サイトのURLが貼られちょっと紛らわしい。そこで、投稿者名にリンクを貼りたくない場合は、105行目付近にある以下の部分を削除します。
$url = str_replace('http://url', '', $url); $url = preg_replace('|[^a-z0-9-_.?#=&;,/:~]|i', '', $url); if (empty($url)/* && empty($email)*/) { 【この部分だけ削除しない】$ret .= $author; }else{ $ret .= '<a href="'; if ($url) { $url = str_replace(';//', '://', $url); $url = (!strstr($url, '://')) ? 'http://'.$url : $url; $url = preg_replace('/&([^#])(?![a-z]{2,8};)/', '&$1', $url); $ret .= $url; //} else { //$ret .= 'mailto:'.antispambot($email); } $ret .= '" rel="external">' . $author . '</a>'; }
削除する際、108行目付近にある $ret .= $author; だけは必ず残すようにして下さい。じゃないと投稿者名が表示されなくなります。
デフォルトでは投稿者名とサイト名の文字制限が可能ですが、記事タイトルも文字制限を行いたい場合は以下の方法を使います。
$output .= "<li>"; $output .= "<a href=¥" $permalink¥">$post_title</a>¥n"; </li>
30行目と70行目付近にある上記コードの間に
$abbr_title = 20; if ($abbr_title && mb_strlen($post_title) > $abbr_title) { $post_title = mb_substr($post_title, 0, $abbr_title); $post_title .= "..."; }
をそれぞれ挿入します。$abbr_title = 20; の部分で文字数制限を設定することが可能です。文字制限を越える部分は “…” と表示されるようになっているので、こちらの表記もお好みで変更して下さい。
上記方法で記事タイトルの文字数制限を行うと、文字化けが起こる可能があります。多分、WordPressME以外では化けるはず。そこでcommented-entry-list.phpに以下のコードを追加します。
mb_language("Japanese"); mb_internal_encoding("UTF-8");
挿入する場所は10行目付近。
これで完了です。
配布元サイトにはGet Recently Commentedという同じようなプラグインがありますが、こちらはコメントとトラックバックが混ざって表示されるプラグインです。
場合によってはGet Recently Commentedの方が都合いいという人もいると思うので、使いやすい方を選択すればいいかなと思います。ソースは似たようなものなので、当記事のカスタマイズで色々変更可能です。