wp_count_commentsхук-фильтрWP 2.7.0

Позволяет изменить количество комментариев для указанной записи или сайта в целом.

Использование

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 записи.

Примеры

0

#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_count_comments
wp-includes/comment.php 1412
$filtered = apply_filters( 'wp_count_comments', array(), $post_id );

Где используется хук в WordPress

Использование не найдено.