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 | Введена. |