MENU

check_comment()

check_comment() は、WordPress がコメントの投稿を受け入れる前に内部チェックを行う関数です。

コメント数や含まれるリンク数、禁止ワードやIPのチェック、そしてモデレーション設定に応じて、コメントを受け入れるかどうかを判定し、その結果(承認または拒否)を真偽値で返します。これにより、スパム対策や不適切投稿の自動ブロックが可能になります。

目次

基本構文

check_comment(
  string $author, 
  string $email, 
  string $url, 
  string $comment, 
  string $user_ip, 
  string $user_agent, 
  string $comment_type
): bool
  • 指定されたコメント情報をもとに、WordPress の内部基準に照らし合わせて判定します。
  • 内部的に get_option() や正規表現チェック、以前承認済みかどうかの確認を行います。

引き数と戻り値

スクロールできます
引数名内容
$authorstringコメント投稿者名
$emailstring投稿者のメールアドレス
$urlstring投稿者のウェブサイトURL
$commentstringコメント本文
$user_ipstring投稿者のIPアドレス
$user_agentstring投稿者のブラウザUser-Agent
$comment_typestringコメント種別(例:’comment’, ‘trackback’)
スクロールできます
戻り値解説
trueboolコメントが有効で、投稿可能と判断された場合に返されます。
falseboolコメントが無効(例:コメントが許可されていない投稿など)の場合に返されます。
WP_Errorオブジェクトコメントが不正(例:空の内容、ブラックリスト該当など)の場合にエラー情報を含むオブジェクトが返されます。

使用例

タグを使った使用例

$ok = check_comment(
  '山田太郎',
  'taro@example.com',
  'https://example.com',
  'これはテストコメントです。',
  $_SERVER['REMOTE_ADDR'],
  $_SERVER['HTTP_USER_AGENT'],
  'comment'
);

if ( $ok ) {
  echo 'コメント投稿が可能です。';
} else {
  echo 'コメントは承認されませんでした。';
}

$oktrue の場合、投稿されたコメントは規定の条件を満たしていると判断されます。

注意点

  • 「すべてのコメントを手動承認する」に設定している場合、この関数は常に false を返します
  • URLを含むコメントやワードフィルターによる制限項目があるときはその定義に従います。
  • 投稿者が以前に承認されたことがある投稿者なら、自動承認されるケースがあります。

良く一緒に使われる関数

wp_check_comment_data()

check_comment() を含む複数の条件をまとめてチェックし、承認ステータス(承認、待機、拒否など)を返します。

wp_check_comment_disallowed_list()

禁止ワード、メールアドレス、IP、URL、ユーザーエージェントなどをチェックし、スパム判定を行う。

get_option()

チェック条件(例:リンク数やモデレーションキーワードなど)を取得するために使用されます。

併用例

$status = wp_check_comment_data($comment_data);
if ( is_wp_error($status) || $status !== 1 ) {
  // スパム、保留、エラー処理
} else {
  // 投稿処理へ
}

想定されるトラブル

手動承認モードなのに true が返る

get_option('comment_moderation') が正しく取得できていない、または引数が誤っている。

解決方法

  • 「設定 > ディスカッション」で確認し、comment_moderation オプションが 1 になっているか確認。
  • 引数に渡している値に誤りがないか検証。

リンク数チェックに引っかかる

コメント内に <a href> タグが多く存在し、comment_max_links オプションで指定された数以上。

解決方法

  • 「設定 > ディスカッション」内の「コメント内のリンク最大数」を調整。
  • code 側で comment_max_links を上書きしたい場合はフィルターを追加。

Q&A

check_comment() はいつ自動で実行される?

wp_new_comment() 内部で呼ばれ、コメント投稿時に自動でチェックされます。

スパム判定されたコメントはどこに行く?

wp_check_comment_disallowed_list() の結果により「spam」または「trash」へ振り分けられます。

特定IPやキーワードだけ排除したい場合は?

moderation_keys やブラックリスト設定でキーワードを登録するか、pre_comment_approved フィルターでカスタマイズ可能です。

まとめ

check_comment() は、WordPressコメント投稿時に自動で呼び出され、リンク数・モデレーション設定・禁止ワード・投稿者履歴など多面的にチェックを行う重要な関数です。

その戻り値はコメント承認可否を示し、スパム対策や不適切な投稿制御に大きく貢献します。他のチェック関数と組み合わせて活用することで、安全で柔軟なコメント処理が可能となります。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次