説明
wp_new_comment() は、訪問者が投稿した、コメントとして、チェック(重複、連続投稿、承認待ちの判定、通知)を行って、追加する関数です。
基本構文
wp_new_comment( array $commentdata, bool $wp_error = false ): int|false|WP_Error
引数
$commentdata:コメントのデータ(comment_post_ID・comment_content・comment_authorなど)$wp_error:trueにすると、重複や連続投稿のときにWP_Errorを返す(falseでは、処理が止まる)
戻り値
追加されたコメントのID。$wp_error が false のとき、重複や連続投稿では、処理が止まる。true なら WP_Error を返す。
使い方(サンプル)
$comment_id = wp_new_comment( array(
'comment_post_ID' => $post_id,
'comment_content' => $content,
'comment_author' => $author,
), true );
注意点
- プログラムから、直接追加するだけなら、
wp_insert_comment()。 - 重複や、連続投稿は、拒否されることがあります。
実務での使いどころ
- 独自のフォームから、投稿されたコメントを、通常のコメントと、同じ扱いで追加するとき。
よくあるミスと対処
- 訪問者のコメントに、
wp_insert_comment()を使い、スパムの確認や、承認待ちの処理が行われない。 - 渡すデータは、スラッシュ済みの前提。
$_POST由来ではなく、自分で作った文字列は、wp_slash()を通して渡す。通さないと、バックスラッシュが消える。 - 戻り値が
WP_Errorのときを、考えていない。 - 入力値を、検証・サニタイズしていない。
NG例
wp_insert_comment( $data ); // 訪問者のコメントを、チェックなしで追加している
OK例
$comment_id = wp_new_comment( $data, true );
if ( is_wp_error( $comment_id ) ) {
return;
}
使い分け早見表
| 関数 | 特徴 |
|---|---|
wp_new_comment() |
訪問者のコメントとして、チェックを行って追加する |
wp_insert_comment() |
チェックなしで、直接追加する |
get_comments() |
コメントを取得する |

コメント