WordPress プラグインを使わずにサイドバーにコメントの内容を表示する
この記事は投稿されてから1年以上経っています。内容が古くなっているかもしれませんので、ご注意ください。
※ワードプレステーマ:Sparkling 1.6.0
このブログ、たまーにコメントを頂けるようになってきたのですが、サイドバーに表示されるコメントウィジェット(最新のコメント)は、デフォルトだとコメントがあったことしか表示されないので、コメント内容も表示することにしました。
参考:WordPress「最近のコメント」ウィジェットをプラグイン無しでリッチ表示
テキストウィジェットでショートコードを扱えるように
functions.php に下記を追加。
function Include_my_php($params = array()) {
extract(shortcode_atts(array(
'file' => 'default'
), $params));
ob_start();
include(get_theme_root() . '/' . get_template() . "/$file.php");
return ob_get_clean();
}
add_shortcode('myphp', 'Include_my_php');
特に何も考えないで追加しましたが、問題なさそうです。
こうすることで、テキストウィジェットでもショートコードが効くようになりました。
ショードコードで呼び出す PHP ファイルを作成してアップロード
sidebar-customcomment.php というファイル名にしました。
PHP の中身は下記。
<?php
/**
* http://afirika.net/recent-comments-without-plugin
*
*/
<div class="widget_recent_comments">
<ul id="recentcomments">
<?php
$args = array(
// 'author__not_in' => '1', // 管理者は除外
'number' => '8', // 取得するコメント数
'status' => 'approve', // 承認済みコメントのみ取得
'type' => 'comment' // 取得タイプを指定。トラックバックとピンバックは除外
);
// The Query
$comments_query = new WP_Comment_Query;
$comments = $comments_query->query( $args );
// Comment Loop
if ( $comments ) {
foreach ( $comments as $comment ) {
$url = get_permalink($comment->comment_post_ID);
echo '<li class="recentcomments">';
echo '<a href="'.get_permalink($comment->comment_post_ID).'#comment-'.$comment->comment_ID.'">'.$comment->post_title.'</a> に ';
echo '<span class="comment-author-link">';
comment_author($comment->comment_ID);
echo '</span> より『';
$my_pre_comment_content = strip_tags($comment->comment_content);
if(mb_strlen($my_pre_comment_content,"UTF-8")>40) {
$my_comment_content = mb_substr($my_pre_comment_content,0,40) ; echo $my_comment_content. '...' ;
} else {echo $comment->comment_content;};
echo '』 (';
echo comment_date( 'Y/m/d', $comment->comment_ID);
echo ')</li>';
}
} else {
echo 'コメントなし';
}
?>
</ul>
</div>
日付の部分(comment_date)ですが、書式を変えたい時は下記を見ると良いかと。
–>日付と時刻の書式 – WordPress Codex 日本語版
WordPress の書式ではなく PHP の関数(引数)みたいですね。
HTML 部分は新たに CSS を当てるのが面倒なので、テーマのデフォルト CSS が効くようにしました。
ウィジェットにショートコードを記載
myphp file='sidebar-customcomment'
という感じで、先ほど作成・アップロードした PHP ファイル名を記載すれば表示されるようになりました。( [ ] で囲って記述ください)