サイドバーに「最近のコメント」を付けたいのだが、ウィジェットを使用するとなんかイマイチ拡張性に乏しい・・・。
プラグインに頼るのもなんだか悲しい・・・ので作る。
偉大なる先人である、コチラのサイトを参考に。
正直SQLはからきし分からないのだが、一応
<?php
global $wpdb;
$sql = "SELECT DISTINCT ID, post_password, comment_ID, comment_post_ID, comment_author, comment_approved, comment_type,comment_author_url, SUBSTRING(post_title,1,12) AS com_excerpt, SUBSTRING(comment_date,1,10) AS com_date
FROM $wpdb->comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
$wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND
post_password = ''
ORDER BY comment_date_gmt DESC
LIMIT 5";
$comments = $wpdb->get_results($sql);
$output .='<div>最近のコメンティーヌ</div>';
$output .= "\n<ul>";
foreach ($comments as $comment) {
$output .= "\n<li>". "<a href=\"" . get_permalink($comment->ID) . "#comments"."\" title=\"". strip_tags($comment->com_excerpt) ."-". $comment->comment_ID . "\">" . strip_tags($comment->com_excerpt) ."</a>...に<br /> ". "<a href=\"" . get_permalink($comment->ID) . "#comment-" . $comment->comment_ID . "\" title=\"". strip_tags($comment->comment_author) . "-" .
$comment->comment_ID . "\">".strip_tags($comment->comment_author) ." </a>より <span class=\"side-comment-date\">(" . strip_tags($comment->com_date) . ")</span></li>";
}
$output .= "\n</ul>";
echo $output;
?>
細かい事は分からないが、2、3行目でデータベースに取りに行くテーブルを選択するみたい。
今回は「記事タイトル(post_title)」と「投稿時間(comment_date)」を文字数指定して取り出したいので、
SUBSTRING(post_title,1,12) AS com_excerpt
(post_titleというデータを1文字目から12文字目まで取り出して、com_excerptという名前にする。)
SUBSTRING(comment_date,1,10) AS com_date
(comment_dateを1文字目から10文字目まで取り出して、com_dateという名前にする。)
と記述。これを行わないでそのまま取り出したら、例えば記事タイトル(comment_date)なら
「森の妖精さんの気まぐれキノコシチュー」
と出てくる。これを10文字まで取り出す事で、
「森の妖精さんの気まぐ...」
と出力される。(...は後付けだけど)
テーブルについてはコデックス参照。
そして12行目から$outputを使ってタグを出力する。
頑張って整形する。
出来たら、サイドバーに入れる。
サイドバーがごちゃごちゃしてストレスで吐きそうな人は、別ファイルにして読み込むか、functions.phpに記入するとすっきりする。
・別ファイルにして読み込む
適当な名前(ここではsidebar-comments.php)にして、テーマフォルダにぶち込み、挿入したい部分に
<?php include ( TEMPLATEPATH . '/sidebar-comments.php'); ?>
と書く。
・ファンクションに入れる
functions.phpの中でファンクション名を与え(ここではget_sidebar_recent_c)、
function get_sidebar_recent_c($initial = true) {
/* ここにさっきのソースを記述(モチロン<?php~~?>抜いて)*/
}
と書く。そして挿入したい部分に
<?php get_sidebar_recent_c(); ?>
これで南斗水鳥拳ばりに綺麗になった。