WordPressの投稿コメントの文字数を制限する
ブログなどを運営していると非常に長文のコメントが投下されること、ありますよね。
気合の入った応援コメントならう良いものの、99.9%はスパム投稿だったりするわけで。
ってことで投稿できる文字数を制限します。
Cocoon+子テーマ使用
当方、Cocoon環境なので他のテーマでの動作は分かりません。
※予期せぬ動作をする可能性があります。自己責任で。
貼り付け場所はココ。テーマファイルエディター→編集するテーマ「Cocoon Child」→テーマのための関数(function.php)
以下のコードを一番下に貼り付けるだけ。最大文字数は適宜調整してください。
//----------------------------------------------------------
//コメントの文字数を制限
//----------------------------------------------------------
function limit_comment_mozisu($comment_data) {
$max_length = 300; // 最大文字数を設定
if (strlen(trim($comment_data['comment_content'])) > $max_length) {
wp_die('コメントの文字数が制限を超えています。最大 ' . $max_length . ' 文字までです。');
}
return $comment_data;
}
add_filter('preprocess_comment', 'limit_comment_mozisu');
実装例
うちのサイトで実装してみました。
試しに夏目漱石の「吾輩は猫である」から冒頭部分数百文字をコメントしてみました。
そのままコメント送信すると……
ちゃんと弾かれます。最大文字数は100に設定していますが、そこは必要に応じて調整してくださいね。
もしかするとハック的に迂回する方法もあるかもしれませんけども、一般的なスパム、荒らしは防ぐことが出来るということで。
設定文字数以下なら大丈夫。
エラーがでる
Exception thorw without a stack frame
PCなどの日本語入力モードで書き換えるとエラーが出るっぽい?
英数入力モードで入力するようにしてください。全角入力→半角変換でも駄目なことがあるようです。
全角スペースがないかも要チェック。
さくらサーバのWAFもオフに
さくらサーバのセキュリティであるウェブアプリケーション・ファイアウォールの効果でfunction.phpの書き換えがロックされます。
一時的にオフにして書き換えを行ってください。
プラグインでもいいですけれど
おそらく同様の機能があるWPプラグインは存在するはずですが、そういうのって機能が多すぎたりデータベースに跡を残したりするんですよね。
今回のコードは単純に文字数で条件分岐させるだけ。非常に軽量でシンプルな機能しかありません。でも逆に余計なものは残さない、データベースを汚さないという点ではメリットはあるんじゃないかなーと思います。
この記事が気に入ったらサポートをしてみませんか?