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 1529
$filtered = apply_filters( 'wp_count_comments', array(), $post_id );