WP-RecentCommentsでトラックバックとピングバックを分ける

サイドバーで最近のコメントとトラックバックを表示するのに、プラグインのGet Recent Commentsを使っていたのですが、トラックバックとピングバックを分けて表示したいと思い、別のプラグインを探してググったところ、WordPressブログ作成メモ  トラックバック・ピンバック以外のコメントだけをウィジェットに表示するプラグインのページを発見。

早速、WordPress › WP-RecentComments « WordPress Pluginsのページから、最新版の2.0.4をダウンロードしたものの、設定画面ではトラックバックとピングバックの表示は一緒になってしまっていて、分けることができなくなっていました。(古いバージョンの1.8.3ではwp_recentcomments()をwp_recentcomments(‘pingback=false”)とすることで可能)

でソースを改良して、トラックバックとピングバックを分けられるようにしてみました。(WP-RecentComments 2.0.4)

シングルコーテーションとダブルコーテーションが全角になって表示されることがあるので、コピーにはご注意ください。

wp-recentcomments.phpファイルの編集

148行の
$options['ping'] = true;

の下に
$options['trackback'] = true;

を追加

204行(上記編集後の位置)の

// ping
if(!$_POST['ping']) {
$options['ping'] = (bool)false;
} else {
$options['ping'] = (bool)true;
}

の下に

// trackback
if(!$_POST['trackback']) {
$options['trackback'] = (bool)false;
} else {
$options['trackback'] = (bool)true;
}

を追加

333行(上記編集後の位置)の
<br />
<label>
<input name="ping" type="checkbox" <?php if($options['ping']) echo 'checked="checked"'; ?> />
<?php _e('Show pingback and trackback comments.', 'wp-recentcomments'); ?>
</label>

<br />
<label>
<input name="ping" type="checkbox" <?php if($options['ping']) echo 'checked="checked"'; ?> />
<?php _e('Show pingback comments.', 'wp-recentcomments'); ?>
</label>

に変更して
下に
<br />
<label>
<input name="trackback" type="checkbox" <?php if($options['trackback']) echo 'checked="checked"'; ?> />
<?php _e('Show trackback comments.', 'wp-recentcomments'); ?>
</label>

を追加

wp-recentcomments.phpファイルの編集終了。

次に、core.phpファイルの編集

46行目

// Control pingback and trackback comments.
$sql_ping = '';
if(!$options['ping']) {
$sql_ping = " AND comment_type != 'pingback' AND comment_type != 'trackback'";
}

// Control pingback comments.
$sql_ping = '';
if(!$options['ping']) {
$sql_ping = " AND comment_type != 'pingback'";
}

に変更して
下に

// Control trackback comments.
$sql_trackback = '';
if(!$options['trackback']) {
$sql_trackback = " AND comment_type != 'trackback'";
}

を追加

79行目(上記編集後の位置)の
// Select comments on database.
$comments_query = "SELECT comment_author, comment_author_email, comment_author_url, comment_ID, comment_post_ID, REPLACE(comment_content, '\n', '') AS comment_content, comment_type, comment_author_IP, comment_agent FROM $wpdb->comments, $wpdb->posts WHERE comment_approved = '1' AND comment_post_ID = ID AND post_status = 'publish'" . $sql_protected . $sql_private . $sql_ping . $sql_admin . " ORDER BY comment_date_gmt DESC LIMIT " . $start . "," . $size;
$comments = $wpdb->get_results($comments_query);

// Select comments on database.
$comments_query = "SELECT comment_author, comment_author_email, comment_author_url, comment_ID, comment_post_ID, REPLACE(comment_content, '\n', '') AS comment_content, comment_type, comment_author_IP, comment_agent FROM $wpdb->comments, $wpdb->posts WHERE comment_approved = '1' AND comment_post_ID = ID AND post_status = 'publish'" . $sql_protected . $sql_private . $sql_ping . $sql_trackback . $sql_admin . " ORDER BY comment_date_gmt DESC LIMIT " . $start . "," . $size;
$comments = $wpdb->get_results($comments_query);

に変更
core.phpファイルの編集終了。

wp-recentcomments.poを状況に応じて編集して、moに変換してください。
(例えば、MacPortsを使ってインストールしたmsgfmtを利用する)

変更後の設定画面は以下のようになります。

コメント

  1. […] This post was mentioned on Twitter by MacFeeling, ken. ken said: +MacFeeling Blog+ WP-RecentCommentsでトラックバックとピングバックを分ける http://dlvr.it/8PkhY […]

タイトルとURLをコピーしました