試験的に実装してみました。

  • comments.php

これを

<?php comment_form(); ?>

こうする。

<script type="text/x-html">
<?php comment_form(); ?>
</script>
<script type="text/javascript">
(function() {
  var s = document.getElementsByTagName('script');
  document.write(s[s.length-2].text);
}());
</script>
<noscript><p>Turn on JavaScript to comment.</p></noscript>

出力されるフォームのHTMLをまるごとscript要素内に閉じ込めて非HTMLとして出力し、直後にスクリプトでそれをdocument.write()で書き出す、という。

type="text/x-html"については別の記事参照。

スクリプトが使えないUA向けには一応メッセージを表示。スパム送信がどういう方法なのか知らんけど、たぶんスクリプトは動かないだろうしこれでいいかなあと。

スクリプトが動くのなら、さらにユーザーにちょっと操作をしてもらう仕様にする必要があるが、とりあえずこれで試してみようと思ってます。