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 Приклади #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.0 Add updating comment meta during comment update. З версії 5.5.0 The $wp_error parameter був added. З версії 5.5.0 Відновні значення для неправильного коментаря або повідомлення ID були змінені на false instead of 0.
Код wp_update_comment() 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;
} Зв’язані функції