<?php if ( !defined( 'ABSPATH' ) ) exit;//PHPの宣言と直接アクセスの拒否

/*** URLを含むコメントは捨てる ***/
/* コメントを敢えて拒否せず、送信した体にして捨てる */
/* 承認待ちにもならないので迷惑コメントを目にすることはない */
function haup_auto_delete_with_url_comments( $commentdata ){
	$content = $commentdata['comment_content'];

	// URL（http/https）または <a>タグが含まれているかチェック
	if ( preg_match( '/https?:\/\//i', $content ) || preg_match( '/<a\s/i', $content ) ) {
        
		// Ajaxリクエスト（wp-admin/admin-ajax.php）経由の場合
		if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
            
			// WordPress標準のAjaxコメント投稿成功時のレスポンスを模倣
			// これにより、ブラウザ側には「承認待ちプレビュー」が表示される
			$message = __('Thank you for your comment. Please wait until it is approved.','hima-art-utility');

			wp_send_json_success([
				'comment_html' => '<article class="comment-body"><p>'.esc_html( $message ).'</p></article>',
				'message'      => 'Success'
			]);

			exit;
 		}

		// 通常のPOST送信（JavaScriptオフなど）の場合のフォールバック
		// 元の記事ページにリダイレクトさせ、クエリパラメータ等で成功を装うことも可能
		wp_safe_redirect( wp_get_referer() );

		exit;
	}

	return $commentdata;
}
add_filter('preprocess_comment','haup_auto_delete_with_url_comments' ,1);

/*** コメントフォームの下へ追加するコンテンツ ***/
//comment_form_after
function haup_add_message_for_comment_auto_delete_with_url() {
	$message = __('*Comments containing links or URLs will be ignored.','hima-art-utility');

	echo '<p>'.esc_html( $message ).'</p>';
}
add_action( 'comment_form_after_fields', 'haup_add_message_for_comment_auto_delete_with_url' );
add_action( 'comment_form_logged_in_after', 'haup_add_message_for_comment_auto_delete_with_url' );