この記事は最後に更新してから1年以上経過しています。

日本語が含まれていないコメントを無効化する

説明

日本のユーザーを対象にサービス(情報)展開しているサイトの場合、英文のみのコメントはあまりうれしくない。ましてやスパムコメントの対応は時間の無駄でしかない。そんなわけで、日本語を含んでいないコメントを無効化することにした。

さっそくだが、日本語を含んでいないコメントを無効化するには次のように自テーマのfunctions.phpに以下のコードを追加する。

add_action( 'pre_comment_on_post', 'mytheme_pre_comment' );

function mytheme_pre_comment( $comment_post_ID ) {
	if ( isset( $_POST['comment'] ) && !preg_match( "/[あ-ん]+/u", $_POST['comment'] ) )
		wp_die( __('<strong>ERROR</strong>: please type a comment in Japanese.') );
}

コメント投稿時に実行されるアクションはいくつか存在しているが、ここではpre_comment_on_postアクションを使用している。このアクションは、対象の投稿情報がコメント可能になっているか調べた後、投稿されたコメント情報をチェックを行う前に実行されるアクションで、今回の対応を行うには都合のよい。

アクションの処理内容は、まずコメントが入力されているか調べ、入力されている場合はひらがなが含まれているか調べて日本語のコメントかどうかを判断している。そして、ひらがなが含まれていない場合は、 wp_die関数にてエラーメッセージを表示し、コメントの登録処理は行わない。日本語のコメントかの判断について、ここでは単純にひらがなが含まれているかどうかで判別しているが、この判別内容については適宜調整してほしい。


最終更新 : 2012年01月31日 21:45


お勧め

esc_attr_e(2018年5月27日 更新)

void esc_attr_e( string $text [ , string $domain = 'default' ] )
現在のロケールに応じた翻訳テキストを取得し、その中に含まれている特殊文字をHTMLエンティティに変換してから表示する。

the_comments_navigation(2018年5月27日 更新)

void the_comments_navigation( [ array $args = array() ] )
コメントナビゲーションを表示する。

readonly(2018年5月27日 更新)

string readonly( mixed $readonly [ , mixed $current = true [ , bool $echo = true ] ] )
readonly属性を表示する。

set_post_type(2019年1月7日 更新)

int|false set_post_type( [ int $post_id = 0 [ , string $post_type = 'post' ] ] )
投稿情報の投稿タイプを変更する。

the_posts_pagination(2018年5月27日 更新)

void the_posts_pagination( [ array $args = array() ] )
アーカイブページ向けのページ番号ナビゲーションを表示する。