photo by MIKI Yoshihito
WordPressのサイドバーに「最近のコメント」を表示させようとしたのですが、デフォルトのウィジェットにはちょっぴり気に入らない点があります。
あれって「記事のタイトル」は表示されるのですが、「コメント」そのものは表示されないんですよね・・。
「コメント」を表示してくれるプラグインをいろいろと探したのですが、なかなかいいものががありませんでした。どれもバージョンが古くて修正が必要なものばかり・・。
仕方がないので自分でコードを書いて実装しました・・。
「コメント」と「投稿者」だけを表示する超シンプルなものです。完成品はこのブログのサイドバーの箇所に設置しておきますね。
さて、実装手順は以下です。
その1 「function.php」を修正!
ワードプレスの「function.php」に以下のコードを追記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
//最近のコメントを表示 function simplecomment(){ echo "<h4>最近のコメント</h4>"; $args = array( "number" => "5", // 取得コメント数 "order" => "desc", // 降順に取得 "status" => "approve", // 承認済みコメントを取得 "type" => "comment" // コメントのみを取得 ); $comments = get_comments($args); if (empty($comments)){ echo "コメントなし"; return; } echo "<ul>"; foreach ($comments as $comment){ $author = $comment->comment_author; //$date = mb_substr($comment->comment_date, 0, 10); $content = $comment->comment_content; //コメントを30文字でカット if(mb_strlen($content) > 30){ $content = mb_substr($content, 0, 30)."..."; } $link = get_permalink($comment->comment_post_ID); echo "<li>・<a href = \"$link\">{$content}</a> {$author} さんより</li>"; } echo "</ul>"; } add_shortcode("simplecomment", "simplecomment"); add_filter("widget_text", "do_shortcode"); |
この関数を呼びだすと「最近5件分のコメント」をプリント表示してくれます。これをサイドバーのウィジェットからショートコードによって呼び出すという手口です。
その2「テキストウィジェット」で表示!
ワードプレスの「ウィジェット」設定画面で、「テキストウィジェット」をサイドバーに追加してください。
「テキストウィジェット」の中には「 [simplecomment] 」という一文を追加してください。
このショートコードにより、サイドバーに最近のコメントが表示されます。
この表示、ずいぶんと殺風景な感じなので、もし気に入らなかったら自分でいろいろデザインをカスタマイズしてみてくださいね。
おまけ
コメント欄で「記事タイトル」も表示させたい場合についてのご質問があったので、コードをちょっと修正してみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
/ //最近のコメントを表示 function simplecomment(){ echo "<h4>最近のコメント</h4>"; $args = array( "number" => "5", // 取得コメント数 "order" => "desc", // 降順に取得 "status" => "approve", // 承認済みコメントを取得 "type" => "comment" // コメントのみを取得 ); $comments = get_comments($args); if (empty($comments)){ echo "コメントなし"; return; } echo "<ul>"; foreach ($comments as $comment){ $post_id = $comment->comment_post_ID; //←★ここを追加 $title = get_the_title($post_id); //←★ここを追加 $author = $comment->comment_author; //$date = mb_substr($comment->comment_date, 0, 10); $content = $comment->comment_content; //コメントを30文字でカット if(mb_strlen($content) > 30){ $content = mb_substr($content, 0, 30)."..."; } $link = get_permalink($comment->comment_post_ID); echo "<li>・<a href = \"$link\">{$title}</a><br>{$content} {$author} さんより</li>"; //←★ここを修正 } echo "</ul>"; } add_shortcode("simplecomment", "simplecomment"); add_filter("widget_text", "do_shortcode"); |
上記のようにコードを修正すると、記事タイトルとコメントが一緒に表示されるようになるはずです(「★ここを追加」という行を追加して、「★ここを修正」という行を修正してください・・)
なんだか表示のレイアウトがちょっとダサい気がするので、かっこいい感じにデザインを修正してみてください・・。
以上です!
コメント
どう、コメント表示されてるかな?
こんにちは。
ワードプレスのサイドウィジェットに最新コメントを表示したくこのページにたどり着きました。
つきましては記事タイトルも表示させたいんですが、やり方がわかりません。
$authorみたいに$the_titleとかいろいろ試してみました。
よろしければ、そのやり方を教示していただけると幸いです。
記事にタイトルを表示させるコードも追記しておきました。ぜひご参考ください・・!