wp_count_comments
Позволяет изменить количество комментариев для указанной записи или сайта в целом.
Использование
add_filter( 'wp_count_comments', 'wp_kama_count_comments_filter', 10, 2 ); /** * Function for `wp_count_comments` filter-hook. * * @param array|stdClass $count An empty array or an object containing comment counts. * @param int $post_id The post ID. Can be 0 to represent the whole site. * * @return array|stdClass */ function wp_kama_count_comments_filter( $count, $post_id ){ // filter... return $count; }
- $count(массив)
- Пустой массив.
- $post_id(число)
- ID записи.
Примеры
#1 Отменим запрос по подсчету комментариев
Допустим у нас на сайте не используются комментарии. Логично убрать упоминания о них в админке.
add_action( 'admin_menu', 'remove_admin_menu_comments' ); add_action( 'add_admin_bar_menus', 'remove_admin_bar_comments' ); add_action( 'wp_dashboard_setup', 'remove_dashboard_recent_comments' ); /** * Удаляем пункт меню "Комментарии" в админке. * * @return void */ function remove_admin_menu_comments() { remove_menu_page( 'edit-comments.php' ); } /** * Удаляем пункт меню "Комментарии" в тулбаре. * * @return void */ function remove_admin_bar_comments() { remove_action( 'admin_bar_menu', 'wp_admin_bar_comments_menu', 60 ); } /** * Удаляет виджет "Последние комментарии" из Консоли WordPress. * * @return void */ function remove_dashboard_recent_comments() { $dash_side = &$GLOBALS['wp_meta_boxes']['dashboard']['side']['core']; $dash_normal = &$GLOBALS['wp_meta_boxes']['dashboard']['normal']['core']; unset( $dash_normal['dashboard_recent_comments'] ); }
Независимо от этих отмен, запрос на подсчёт комментариев сайта всё равно произойдёт в файле menu.php, который уже не имеет смысла. Отменим этот и другие подобные запросы по подсчету комментариев как для указанной записи, так и для сайта в целом:
add_filter( 'wp_count_comments', 'wp_count_comments_empty' ); function wp_count_comments_empty() { return (object) [ 'approved' => 0, 'awaiting_moderation' => 0, 'moderated' => 0, 'spam' => 0, 'trash' => 0, 'post-trashed' => 0, 'total_comments' => 0, 'all' => 0, ]; }
Список изменений
С версии 2.7.0 | Введена. |
Где вызывается хук
wp_count_comments
wp-includes/comment.php 1412
$filtered = apply_filters( 'wp_count_comments', array(), $post_id );