Как изменить количество выводимых комментариев в виджете «Активность»

Каждый раз, когда я захожу в админку, я попадаю на ее главную страницу, на которой находится виджет Активность. То есть, зайдя в админку, я сразу смотрю, не появились ли на блоге новые комментарии, и, если таковые имеются, я нажимаю на символ # и попадаю по прямой ссылке непосредственно на тот комментарий, на который я хочу ответить.

Я всегда так делал, в результате чего очень привык к такому процессу. А что произошло дальше? На сайт стало заходить больше людей, а следовательно, стало появляться больше комментариев, и, когда новых комментариев за раз стало приходить больше пяти, у меня начались неудобства — в итоге для того, чтобы ответить на все комментарии, мне приходилось переходить на страницу со всеми комментариями и выискивать там новые. Одно время я даже немного путался с этим, в результате некоторые комментарии я просто пропустил, оставив без ответа.

Очень жаль, что в WordPress не предусмотрено фильтров, позволяющих изменить количество комментариев в этом виджете, поэтому единственным решением является перерегистрация данного виджета (те, кто уже собрался залезать в код движка — не спешите).

По сути, всё, что нам требуется, это вставить этот код в functions.php текущей темы:

/*
 * Удаляем стандартный виджет Активность
 */
function true_remove_activity_widget() {
	global $wp_meta_boxes;
	unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_activity']);
}
add_action('wp_dashboard_setup', 'true_remove_activity_widget' );
 
/*
 * Регистрируем свой виджет
 */
function true_add_activity_widget() {
	wp_add_dashboard_widget('dashboard_activity', 'Activity', 'true_site_activity'); // функция true_site_activity будет выводить содержимое виджета
}
add_action('wp_dashboard_setup', 'true_add_activity_widget' );
 
/*
 * Содержимое нового виджета
 */
function true_site_activity() {
	echo '<div id="activity-widget">';
 
	// посты, запланированные на публикацию (вы можете изменить их параметры отображения либо не отображать совсем)
	$future_posts = wp_dashboard_recent_posts( array(
		'display' => 2,
		'max'     => 5,
		'status'  => 'future',
		'order'   => 'ASC',
		'title'   => __( 'Publishing Soon' ),
		'id'      => 'future-posts',
	) );
 
	// недавно опубликованные посты
	$recent_posts = wp_dashboard_recent_posts( array(
		'display' => 2,
		'max'     => 5,
		'status'  => 'publish',
	        'order'   => 'DESC',
		'title'   => __( 'Recently Published' ),
		'id'      => 'published-posts',
	    ) );
 
	// а вот и комментарии, в параметрах функции указываем количество выводимых комментов
	$recent_comments = wp_dashboard_recent_comments( 10 );
 
	// что следует отображать, если нет ни постов ни комментов
	if ( !$future_posts && !$recent_posts && !$recent_comments ) {
		echo '<div class="no-activity">';
		echo '<p class="smiley"></p>';
 		echo '<p>' . __( 'No activity yet!' ) . '</p>';
 		echo '</div>';
	}
	echo '</div>';
}

Что ещё, кроме изменения количества выводимых комментариев, вы можете сделать, используя данный код:

  • менять местами блоки недавно опубликованных постов, запланированных постов и свежих комментариев,
  • вы также можете изменить количество выводимых постов в блоках с опубликованными и запланированными постами,
  • также в блок «Активность» вы можете добавить и что-то своё, например произвольные типы постов, страницы и т.д.

У себя на блоге я вообще убрал блоки с опубликованными и запланированными постами и оставил только комментарии, вот так:

комментарии в виджете активность в консоли WordPress
Подпишитесь, чтобы раз в неделю получать свежие статьи с блога по email.

Смотрите также

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Миша: Да, точно)

  • Владимир: и на третьей строке не хватает скобки ) закрывающей if :)

  • Миша: Добрый вечер! Рекомендую получить ID пользователя через функцию get_current_user_id().

  • Дмитрий: Миша, подскажите пожалуйста, я использую такой редирект, но он не срабатывает: add_action( 'template_redirect', funct...

  • Миша: Ну как не определена - это аргумент функции. Или я просто вас не до конца понимаю.