XOOPS版WordPressのコメント承認画面にて一括で削除にチェックする

all-delete-custom.png

XOOPS版WordPressのコメント承認の画面で、一括で削除を選択するカスタマイズです。

スパムフィルターがうまく動かない

使用しているスパムフィルターがどうもスパムでないものも、がんがん削除してしまっているという問題が、未だに残っているようなので、とりあえず削除せずに、承認待ちの状態で残すようにしました。

削除が面倒

承認待ちにすることで、スパムじゃないコメントが消されてしまうという問題は無くなりましたが、スパムは承認待ちの画面で削除しないといけません。

ところが、標準の承認待ちの画面は削除するのに一つずつラジオボタンを「削除」に切り替えていかないといけないので、非常に面倒。かなりの数のスパムがやってくるので、これはやっていられないということで、テンプレートを改造して、いっぺんに削除が選択できるようにしました。

テンプレートを変更

たぶん、お作法に則っていないやり方だと思うので、実現できればいいと思う人だけやってみてください。
承認画面のテンプレートは「modules/wordpress/wp-admin/templates」の中の「moderation.html」です。

まず、そいつの先頭に以下のスクリプトを入れます。

<script language="JavaScript">
<!--
function selectDelete(ctrl){
 ctrl.checked=true;
}
function allSelectDelete(){
 var x,k,f,j; x=document.forms;
 for (k=0; k<x.length; ++k)
 {
  f=x[k];
  for (j=0;j<f.length;++j)
   if (f[j].type.toLowerCase() == "radio" && f[j].value=="delete")
    selectDelete(f[j]);
 }

-->
</script>

次に、

<input type="submit" name="submit" value="<{$smarty.const._LANG_WPM_MODERATE_BUTTON}>" />

の行の上に

 <p><a href="javascript:allSelectDelete()">削除にチェック</a></p>

を入れます。日本語埋め込んでるのが作法違反のような気がするのですが、楽に変更するのが目的なのでよしとします。
日本語を埋め込んだ場合はエンコーディングをあわせないと化けるので注意してください。
スクリプト部分は、こちらのサイトの「すべてのチェックボックスをオンオフ」というブックマークレットを参考にさせていただきました。

最初から削除が選ばれていればいいのでは・・・

これで、無事、コメント承認画面に「削除にチェック」というリンクが表示されて、それを押すとすべてのコメントに対して、削除が選択されるのですが、そもそも全部削除する可能性が高いならば、テンプレートの

・・・ value="later" checked="checked" />

となっているところのcheckedの指定を外して、代わりに

・・・・value="delete" />

となっている行を

・・・・value="delete" checked="checked" />

のようにすれば、よかったのではと、今になって気づきました。