wp_update_comment_count()
Обновляет количество комментариев у указанной записи (поста).
Хуков нет.
Возвращает
true|false|null. true, если удалось обновить число комментарий. false в противном случае.
Использование
wp_update_comment_count( $post_id, $do_deferred );
- $post_id(число) (обязательный)
- ID поста (записи).
- $do_deferred(логический)
Это внутренний параметр, которым нужно управлять через функцию wp_defer_comment_counting(). Он нужен для ускорения импорта большого количества комментариев.
Указывает нужно ли запустить обновления количества комментириев поста, которые были отложены ранее.
Обновления не происходит, если комментарий находится на модерации.
Если параметр
$do_deferredустановлен в false (по умолчанию) и комментарий находится на модерации, ID поста ($post_id) будет добавлен в очередь для будущего обновления. Смотрите wp_defer_comment_counting().По умолчанию: false
Примеры
#1 Простой пример использования
Например, мы удалили комментарии из БД у записи 3. Сделали мы это прямым запросом в БД.
Теперь нужно обновить число - кол-во комментариев записи:
$post_id = 3; wp_update_comment_count( $post_id );
#2 Обновим кол-во комментариев поста
Например у нас есть своя функцию добавления комментария в БД. После того как она добавить комментарий, нужно запустить эту функцию, чтобы она обновила данные о количестве комментариев у поста к которому комментарий был добавлен нестандартно (не через функцию WP, например, wp_new_comment()).
/**
* Update or insert a comment.
*
* @access public
*
* @param \WP_Comment $comment Comment object.
*/
function upsert_comment( $comment ) {
global $wpdb;
$comment = $comment->to_array();
// Filter by fields on comment table.
$comment_fields_whitelist = array(
'comment_ID',
'comment_post_ID',
'comment_author',
'comment_author_email',
'comment_author_url',
'comment_author_IP',
'comment_date',
'comment_date_gmt',
'comment_content',
'comment_karma',
'comment_approved',
'comment_agent',
'comment_type',
'comment_parent',
'user_id',
);
foreach ( $comment as $key => $value ) {
if ( ! in_array( $key, $comment_fields_whitelist, true ) ) {
unset( $comment[ $key ] );
}
}
$exists = $wpdb->get_var(
$wpdb->prepare(
"SELECT EXISTS( SELECT 1 FROM $wpdb->comments WHERE comment_ID = %d )",
$comment['comment_ID']
)
);
if ( $exists ) {
$wpdb->update( $wpdb->comments, $comment, array( 'comment_ID' => $comment['comment_ID'] ) );
}
else {
$wpdb->insert( $wpdb->comments, $comment );
}
// Remove comment from cache.
clean_comment_cache( $comment['comment_ID'] );
// Обновляем данные о колличестве комментариев у записи
wp_update_comment_count( $comment['comment_post_ID'] );
}
Заметки
- Смотрите: wp_update_comment_count_now() For what could cause a false return value
Список изменений
| С версии 2.1.0 | Введена. |