wp_insert_comment() WP 2.0.0

Вставляє/додає коментар до бази даних.

ВАЖЛИВО! Чекає на екрановані дані! Тобто. якщо ми передаємо дані, які були отримані з $_POST запиту, їх потрібно обробити з допомогою wp_slash() .

Дивіться також функцію wp_new_comment() , яка очищає дані перед тим, як викликати цю функцію.

Основа для:
wp_new_comment()

Хуки з функції

Повертає

int|false. ID нового коментаря або false, якщо не вдалося додати коментарі.

Використання

wp_insert_comment( $commentdata );
$commentdata

Містить масив даних коментаря, що додається. Масив може містити такі поля:

  • comment_agent (рядок)
    HTTP агент (user agent) автора коментаря, у момент відправлення коментаря.
    За замовчуванням: ”

  • comment_approved (число|рядок)
    Схвалений комент чи ні.
    За замовчуванням: 1

  • comment_author (рядок)
    Ім’я автора коментаря.
    За замовчуванням: ”

  • comment_author_email (рядок)
    email автора коментаря.
    За замовчуванням: ”

  • comment_author_IP (рядок)
    IP автора коментаря. Автоматично не визначається.
    За замовчуванням: ”

  • comment_author_url (рядок)
    URL автора коментаря.
    За замовчуванням: ”

  • comment_content (рядок)
    Текст коментаря.
    За замовчуванням: ”

  • comment_date (рядок)
    Дата та час відправки коментаря. У MySQL форматі.
    Типово: null (поточний час)

  • comment_date_gmt (рядок)
    Дата та час відправки коментаря в GMT зоні. У MySQL форматі.
    Типово: null (поточний час у GMT)

  • comment_karma (число)
    Карма коментаря.
    За замовчуванням: 0

  • comment_parent (число)
    ID батьківського коментаря, якому цей коментар буде дочірнім.
    За замовчуванням: 0

  • comment_post_ID (число)
    ID запису до якого належить коментар.
    За замовчуванням: ”

  • comment_type (рядок)
    Тип коментарю. Звичайний коментар немає типу, тобто. дорівнює ”.
    За замовчуванням: ‘comment’

  • user_id (число)
    ID користувача, який публікує коментар.
    За замовчуванням: 0

  • comment_meta (масив)
    Масив із пар: ключ => значениеякі будуть додані до метаданих коментарів.
    Типово: null

Приклади

1

#1 Приклад додавання нового коментаря

$ data = [
	'comment_post_ID' => 1,
	'comment_author' => 'admin',
	'comment_author_email' => '[email protected]',
	'comment_author_url' => 'http://',
	'comment_content' => 'content here',
	'comment_type' => 'comment',
	'comment_parent' => 0,
	'user_id' => 1,
	'comment_author_IP' => '127.0.0.1',
	'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)',
	'comment_date' => null, // отримаємо current_time('mysql')
	'comment_approved' => 1,
];

wp_insert_comment(wp_slash($data));

нотатки

  • Global. wpdb. $wpdb WordPress database abstraction object.

список змін

З версії 2.0.0Введено.
З версії 4.4.0Introduced $comment_meta argument.
З версії 5.5.0Default value для $comment_type argument changed to comment .

Код wp_insert_comment() WP 6.0.2

function wp_insert_comment( $commentdata ) {
	Global $wpdb;
	$ data = wp_unslash ( $ comment data );

	$comment_author =! isset( $data['comment_author'] ) ? '' : $data['comment_author'];
	$comment_author_email =! isset( $data['comment_author_email'] ) ? '' : $data['comment_author_email'];
	$comment_author_url =! isset( $data['comment_author_url'] ) ? '': $data['comment_author_url'];
	$comment_author_IP = ! isset( $data['comment_author_IP'] ) ? '' : $data['comment_author_IP'];

	$comment_date =! isset( $data['comment_date'] ) ? current_time( 'mysql' ) : $data['comment_date'];
	$comment_date_gmt = ! isset( $data['comment_date_gmt'] ) ? get_gmt_from_date( $comment_date ) : $data['comment_date_gmt'];

	$comment_post_ID = ! isset( $data['comment_post_ID'] ) ? 0 : $data['comment_post_ID'];
	$comment_content = ! isset( $data['comment_content'] ) ? '' : $data['comment_content'];
	$comment_karma =! isset( $data['comment_karma'] ) ? 0 : $data['comment_karma'];
	$comment_approved =! isset( $data['comment_approved'] ) ? 1 : $data['comment_approved'];
	$comment_agent = ! isset( $data['comment_agent'] ) ? '' : $data['comment_agent'];
	$comment_type = empty( $data['comment_type'] ) ? 'comment': $data['comment_type'];
	$comment_parent =! isset( $data['comment_parent'] ) ? 0 : $data['comment_parent'];

	$user_id =! isset($data['user_id'])? 0 : $data['user_id'];

	$compacted = compact( 'comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_author_IP', 'comment_date', 'comment_date_gmt', 'comment_content', 'comment_ka comment_type', 'comment_parent', 'user_id');
	if ( ! $wpdb->insert( $wpdb->comments, $compacted ) ) {
		return false;
	}

	$id = (int) $wpdb->insert_id;

	if ( 1 == $comment_approved ) {
		wp_update_comment_count( $comment_post_ID );

		$ data = array ();
		foreach ( array( 'server', 'gmt', 'blog' ) as $timezone ) {
			$data[] = "lastcommentmodified:$timezone";
		}
		wp_cache_delete_multiple($data, 'timeinfo');
	}

	clean_comment_cache($id);

	$comment = get_comment($id);

	// If metadata is provided, store it.
	if ( isset( $commentdata['comment_meta'] ) && is_array( $commentdata['comment_meta'] ) ) {
		foreach ( $commentdata['comment_meta'] as $meta_key => $meta_value ) {
			add_comment_meta ($ comment-> comment_ID, $ meta_key, $ meta_value, true);
		}
	}

	/**
	 * Fires immediately after a comment is inserted into database.
	 *
	 * @ Since 2.8.0
	 *
	 * @param int $id The comment ID.
	 * @param WP_Comment $comment Comment object.
	 */
	do_action( 'wp_insert_comment', $id, $comment);

	return $id;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *