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()
や正規表現チェック、以前承認済みかどうかの確認を行います。
引き数と戻り値
スクロールできます
引数名 | 型 | 内容 |
---|---|---|
$author | string | コメント投稿者名 |
$email | string | 投稿者のメールアドレス |
$url | string | 投稿者のウェブサイトURL |
$comment | string | コメント本文 |
$user_ip | string | 投稿者のIPアドレス |
$user_agent | string | 投稿者のブラウザUser-Agent |
$comment_type | string | コメント種別(例:’comment’, ‘trackback’) |
スクロールできます
戻り値 | 型 | 解説 |
---|---|---|
true | bool | コメントが有効で、投稿可能と判断された場合に返されます。 |
false | bool | コメントが無効(例:コメントが許可されていない投稿など)の場合に返されます。 |
WP_Error | オブジェクト | コメントが不正(例:空の内容、ブラックリスト該当など)の場合にエラー情報を含むオブジェクトが返されます。 |
使用例
タグを使った使用例
$ok = check_comment(
'山田太郎',
'taro@example.com',
'https://example.com',
'これはテストコメントです。',
$_SERVER['REMOTE_ADDR'],
$_SERVER['HTTP_USER_AGENT'],
'comment'
);
if ( $ok ) {
echo 'コメント投稿が可能です。';
} else {
echo 'コメントは承認されませんでした。';
}
$ok
が true
の場合、投稿されたコメントは規定の条件を満たしていると判断されます。
注意点
- 「すべてのコメントを手動承認する」に設定している場合、この関数は常に
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()
は、WordPressコメント投稿時に自動で呼び出され、リンク数・モデレーション設定・禁止ワード・投稿者履歴など多面的にチェックを行う重要な関数です。
その戻り値はコメント承認可否を示し、スパム対策や不適切な投稿制御に大きく貢献します。他のチェック関数と組み合わせて活用することで、安全で柔軟なコメント処理が可能となります。
コメント