WordPressのコメント欄がなんか良い感じになる「DISQUS」。入れてみたら、管理画面の承認待ちコメント数の表示が変になったり、携帯側でのコメント数が正しい数でなくなったりしたので、その変を修正してみました。
今月に入ってから、DISQUSを導入してみたのですが。
なんかあんまりうまくない部分が出たので、トラブルシュートしてみました。実際のところトラブルと言うほどのトラブルではないのですが、気になっちゃったので修正してみた、と言う感じです。
と言うわけで気張ってオーバーヘッド・トラブル・シュート!
その1: 承認待ちコメント数の表示が変?
DISQUSのプラグインを入れたら、管理画面の「投稿」のページにある承認待ちのコメント数の部分が全て「View Comments」となってしまいました。
まあ、コメントの管理はDISQUSでするので実害はないと思うのですが、見た目が美しくないので修正しました。修正後は以下の通り。
承認待ちの表示が吹き出し型のアイコンのものに戻っています。ただし、この修正方法では「View Comments」が吹き出しの「0」になるだけで、実際に未承認コメントが発生しても表示は変わらないようです。永久に0のままです。まあ、コメント管理はDISQUSでs(ry
ちなみに、日付部分の表示がオリジナルのWordPressと違うのはicoroの仕様です。これに関しては以下の記事で紹介しています。参考に出来たらしてください。
修正の手順
さて、では、未承認コメントの修正手順に行きたいと思います。
表示を修正するにはDISQUSのプラグインフォルダの中にあるdisqus.phpを修正します。700行目あたりにあるdsq_comments_text関数を書き換えます。
function dsq_comments_text($comment_text) {
global $post;
if ( dsq_can_replace() ) {
return '<span class="dsq-postid" rel="'.htmlspecialchars(dsq_identifier_for_post($post)).'">View Comments</span>';
} else {
return $comment_text;
}
}
この部分を以下のように書き換えます。「View Comments」を「$comment_text」に変更しているだけです。
function dsq_comments_text($comment_text) {
global $post;
if ( dsq_can_replace() ) {
// return '<span class="dsq-postid" rel="'.htmlspecialchars(dsq_identifier_for_post($post)).'">View Comments</span>';
return '<span class="dsq-postid" rel="'.htmlspecialchars(dsq_identifier_for_post($post)).'">' . $comment_text . '</span>';
} else {
return $comment_text;
}
}
以上で完了です。ちょー簡単。
ホントは未承認コメント数をちゃんと反映するように修正できたらベストだったのですが、イマイチ方法が分からないのでとりあえずこれで。
その2: 携帯表示の時のコメント数が正しくない
icoroでは「Ktai Style」を使って携帯でも記事が見られるようになっておりますが、DISQUS導入後、携帯で見たらどの記事もコメント数が0になっていました。
Ktai Styleは携帯表示の場合、DISQUSプラグインを抑制して、代わりにWordPress標準のコメント機能を使うようになっています。が、バージョンアップかなんかでDISQUSプラグイン側の関数名が変わっちゃったらしく、それにより、DISQUSプラグインの機能をうまくオフれなくなっちゃったみたいです。具体的には「dsq_comments_number」が「dsq_comments_text」に、「dsq_get_comments_number」が「dsq_comments_number」に、それぞれ変わっていました。
というわけで、Ktai Styleに新しい関数名を教えてあげることにしました。
ktai-style/patches/mobile.phpの73行目辺りにDISQUSを無効にしている部分があるので、これを以下のように修正します。コメントアウトしてあるコードはオリジナルのものです。
/* ==================================================
* Disable Disqus comment system
*/
if (defined('DISQUS_URL')) {
remove_filter('comments_template', 'dsq_comments_template');
// remove_filter('comments_number', 'dsq_comments_number');
// remove_filter('get_comments_number', 'dsq_get_comments_number');
remove_filter('comments_number', 'dsq_comments_text');
remove_filter('get_comments_number', 'dsq_comments_number');
remove_filter('bloginfo_url', 'dsq_bloginfo_url');
remove_action('loop_start', 'dsq_loop_start');
// remove_action('loop_end', 'dsq_comment_count');
// remove_action('wp_footer', 'dsq_comment_count');
remove_action('loop_end', 'dsq_loop_end');
remove_action('wp_footer', 'dsq_output_footer_comment_js');
}
これでコメント数の表示が正しくなるハズ。です。