wp_update_comment() WP 2.0.0

Оновлює існуючий коментар у Базі даних.

Перед оновленням функція перевіряє правильне заповнення кожного поля коментаря. Якщо якісь поля не були вказані, вони будуть доповнені з існуючого в БД поля.

Функція чекає на екрановані дані. Тобто. дані, що передаються, обробляються wp_unslash() самою функцією, тому не потрібно заздалегідь видаляти слеші з отриманого значення $_POST запиту…

Повертає

int|false|WP_Error.

  • 1– при успішному оновленні.
  • falseабо WP_Error – при невдачі (залежить від параметра $wp_error).

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

<?php wp_update_comment( $commentarr, $wp_error ) ?>
$commentarr
(масив) (обов’язковий)
Масив містить інформацію про коментарі, яку потрібно оновити. Ключі масиву – це поля таблиці, які будуть оновлені. Обов’язково потрібно вказати поле
comment_ID.
$wp_error
(true/false) (WP 5.5)
Чи потрібно повертати об’єкт
WP_Error у разі невдачі.


Типово: false

Приклади

0

#1 Приклад того, як можна оновити текст коментаря 37:

// Створюємо масив даних
$commentarr = [
	'comment_ID' => 37,
	'comment_content' => 'Тут новий текст коментаря',
];

// Оновлюємо дані у БД
wp_update_comment( $commentarr );

Поля, які можна оновити, такі:

[comment_post_ID] => 356
[comment_author] => shin
[comment_author_email] => [email protected]
[comment_author_url] =>
[comment_author_IP] => 94.181.201.110
[comment_date] => 2011-08-16 00:45:37
[comment_date_gmt] => 2011-08-15 20:45:37
[comment_content] => дякую!
[comment_karma] => 0
[comment_approved] => 1
[comment_agent] => Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 ...
[comment_type] =>
[comment_parent] => 2036
[user_id] => 0

нотатки

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

список змін

З версії 2.0.0Введено.
З версії 4.9.0Add updating comment meta during comment update.
З версії 5.5.0The $wp_error parameter був added.
З версії 5.5.0Відновні значення для неправильного коментаря або повідомлення ID були змінені на false instead of 0.

Код wp_update_comment() WP 6.0.2

function wp_update_comment( $commentarr, $wp_error = false ) {
	Global $wpdb;

	// First, get all of the original fields.
	$ comment = get_comment ($ commentarr ['comment_ID'], ARRAY_A);
	if ( empty( $comment ) ) {
		if ( $wp_error ) {
			return new WP_Error( 'invalid_comment_id', __( 'Invalid comment ID.' ) );
		} else {
			return false;
		}
	}

	// Make sure that the comment post ID valid (if specified).
	if ( ! empty( $commentarr['comment_post_ID'] ) && ! get_post( $commentarr['comment_post_ID'] ) ) {
		if ( $wp_error ) {
			return new WP_Error( 'invalid_post_id', __( 'Invalid post ID.' ) );
		} else {
			return false;
		}
	}

	// Escape data pulled from DB.
	$ comment = wp_slash ($ comment);

	$old_status = $comment['comment_approved'];

	// Merge old and new fields with new fields overwriting old ones.
	$ commentarr = array_merge ($ comment, $ commentarr);

	$ commentarr = wp_filter_comment ($ commentarr);

	// Now extract the merged array.
	$ data = wp_unslash ($ commentarr);

	/**
	 * Filters comment content before it is updated in the database.
	 *
	 * @ Since 1.5.0
	 *
	 * @param string $comment_content The comment data.
	 */
	$data['comment_content'] = apply_filters( 'comment_save_pre', $data['comment_content'] );

	$data['comment_date_gmt'] = get_gmt_from_date( $data['comment_date'] );

	if ( ! isset( $data['comment_approved'] ) ) {
		$data['comment_approved'] = 1;
	} elseif ( 'hold' === $data['comment_approved'] ) {
		$data['comment_approved'] = 0;
	} elseif ( 'approve' === $data['comment_approved'] ) {
		$data['comment_approved'] = 1;
	}

	$comment_ID = $data['comment_ID'];
	$comment_post_ID = $data['comment_post_ID'];

	/**
	 * Filters comment data immediately before it is updated in the database.
	 *
	 * Note: data being passed to the filter is already unslashed.
	 *
	 * @ Since 4.7.0
	 * @since 5.5.0 Returning a WP_Error значення з filtrа буде шорт-circuit comment update
	 * and allow skipping further processing.
	 *
	 * @param array|WP_Error $data Новий, затверджений коментар, або WP_Error.
	 * @param array $comment The old, unslashed comment data.
	 * @param array $commentarr The new, raw comment data.
	 */
	$data = apply_filters( 'wp_update_comment_data', $data, $comment, $commentarr);

	// Do not carry on on failure.
	if ( is_wp_error ( $ data ) ) {
		if ( $wp_error ) {
			return $data;
		} else {
			return false;
		}
	}

	$keys = array( 'comment_post_ID', 'comment_content', 'comment_author', 'comment_author_email', 'comment_approved', 'comment_karma', 'comment_author_url', 'comment_date', 'comment_date_g' user_id', 'comment_agent', 'comment_author_IP');
	$ data = wp_array_slice_assoc ($ data, $ keys);

	$rval = $wpdb->update( $wpdb->comments, $data, compact( 'comment_ID' ) );

	if ( false === $rval ) {
		if ( $wp_error ) {
			return new WP_Error( 'db_update_error', __( 'Could not update comment in the database.' ), $wpdb->last_error );
		} else {
			return false;
		}
	}

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

	clean_comment_cache( $comment_ID );
	wp_update_comment_count( $comment_post_ID );

	/**
	 * Fires immediately after a comment is updated in the database.
	 *
	 * The hook also fires immediately before comment status transition hooks є fired.
	 *
	 * @ Since 1.2.0
	 * @since 4.6.0 Added `$data` parameter.
	 *
	 * @param int $comment_ID The comment ID.
	 * @param array $data Comment data.
	 */
	do_action( 'edit_comment', $comment_ID, $data );

	$comment = get_comment( $comment_ID );

	wp_transition_comment_status( $comment->comment_approved, $old_status, $comment );

	return $rval;
}

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

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