[WP] Widgetでコメントだけを表示

2014/01/24WordpressWP-カスタマイズ

WordPressでコメントとトラックバックが同一扱いされる件で、個々の記事に関しては前のエントリで解決したのだが、サイドバーなどで利用するWidgetで「最近のコメント」を表示するものがあるが、それもコメントとトラックバックが同一に表示されるのでなんとかしてみる。

「最近のコメント」を表示するWidgetはWPのいつの頃だったか忘れてしまったが、標準である(と思う)Widgetなので
/wp-includes/widgets.php 内で wp_widget_recent_comments 関数で定義されている。

一番手っ取り早いのはコメントデータを読み込む時にトラックバック(ピンバック)のデータを読まなくすればいいので、sql文の所で「トラックバックとピンバックのデータはいらねーよ」と指定すればOK。

/wp-oncluds/widgets.php 980行目あたり

if ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) {
  $comments = $wpdb->get_results("SELECT comment_author, comment_author_url, comment_ID, comment_post_ID FROM $wpdb->comments WHERE comment_approved = '1' AND comment_type<>'pingback' AND comment_type<>'trackback' ORDER BY comment_date_gmt DESC LIMIT $number");
  wp_cache_add( 'recent_comments', $comments, 'widget' );

具体的には
「AND comment_type<>'pingback’ AND comment_type<>'trackback’」を ORDER BY句の前に挿入する。
(正確には『WHERE句に条件を追加』なんだけれどねw)

*注意
データベースを操作する部分に手を加えるので、誤った指定をしたりするとデータベースのデータが消える可能性もあるので、内容の意味がよく分からない・・・って方はさわらない方がいいかと思います;;