wp_new_comment() の使い方|説明・引数・注意点

説明

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() コメントを取得する

関連項目

wp_insert_comment()、get_comments()、comments_open()

公式リファレンス:wp_new_comment() | WordPress Developer Resources

コメント

タイトルとURLをコピーしました