wp_update_comment

Обновляет существующий комментарий в Базе Данных.

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

Все передаваемые данные обрабатываются wp_unslash() самой функцией, поэтому не нужно заранее удалять слэши с полученного значения $_POST запроса…
Хуки из функции:
comment_save_pre
edit_comment
wp_update_comment_data
Возвращает

Числа 1 или 0, в зависимости от удачного или неудачного обновления комментария.

Использование

<?php wp_update_comment( $commentarr ) ?>
$commentarr(массив) (обязательный)
Массив содержащий информацию о комментарии, которую нужно обновить. Ключи массива — это поля таблицы которые будут обновлены. Обязательно нужно указать поле comment_ID
По умолчанию: нет

Примеры

#1. Пример того как можно обновить текст комментария 37:

// Создаем массив данных
  $commentarr = array();
  $commentarr['comment_ID'] = 37;
  $commentarr['comment_content'] = 'Здесь новый текст комментария';

// Обновляем данные в БД
  wp_update_comment( $commentarr );

Поля которые можно обновить, следующие:

[comment_post_ID] => 356
[comment_author] => shin
[comment_author_email] => shinreg@gmail.com
[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 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1
[comment_type] => 
[comment_parent] => 2036
[user_id] => 0
[comment_subscribe] => Y

Код из


wp-includes/comment.php

WP 4.7.2

<?php
function wp_update_comment($commentarr) {
	global $wpdb;

	// First, get all of the original fields
	$comment = get_comment($commentarr['comment_ID'], ARRAY_A);
	if ( empty( $comment ) ) {
		return 0;
	}

	// Make sure that the comment post ID is valid (if specified).
	if ( ! empty( $commentarr['comment_post_ID'] ) && ! get_post( $commentarr['comment_post_ID'] ) ) {
		return 0;
	}

	// 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 the 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 the comment data immediately before it is updated in the database.
	 *
	 * Note: data being passed to the filter is already unslashed.
	 *
	 * @since 4.7.0
	 *
	 * @param array $data       The new, processed comment data.
	 * @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 );

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

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

	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 are fired.
	 *
	 * @since 1.2.0
	 * @since 4.6.0 Added the `$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;
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *