wp_update_comment_count()
Оновлює кількість коментарів у зазначеному записі (посту).
wp_update_comment_count_now()
Хуків немає.
Повертає
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 або 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 | Введено. |