WordPress: выводим список топ авторов

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

Код функции:

function top_authors($number = 10) {
	$uc = array();
	$blogusers = get_users();
	if ($blogusers) {
		echo '<ul>';
		foreach ($blogusers as $bloguser) {
			$post_count = count_user_posts($bloguser->ID);
			$uc[$bloguser->ID] = $post_count;
		}
		arsort($uc);
		$i = 0;
		foreach ($uc as $key => $value) {
			$i++;
			if ($i <= $number) {
				$user = get_userdata($key);
				$author_posts_url = get_author_posts_url($key);
				$post_count = $value;
				if ($post_count > 0) {
					echo '<li><a href="' . $author_posts_url .'">' . $user->display_name . '</a> (' . $post_count . ')</li>';
				}
			}
		}
		echo '</ul>';
	}
}

Его нужно поместить в файл functions.php своего шаблона.

А чтобы отобразить список, в нужное место шаблона своего сайта вставьте этот код:

<?php if (function_exists('top_authors')) top_authors(10); ?>

Как вы уже, наверняка, догадались, 10 – это количество отображаемых авторов.

В результате выведется список авторов. Имя будет ссылкой на страницу автора, а в скобках будет указано количество опубликованных им статей.

Комментарии (4)

  1. 24 апреля 2014 г. в 12:24

    Здравствуйте, а как убрать из топа админа или же запретить по email?

    1. 25 апреля 2014 г. в 14:06 / ответ на коммент Страшный

      Замените эту строку:

      $uc[$bloguser->ID] = $post_count;

      на такую:

      if ($bloguser->user_login != 'admin') $uc[$bloguser->ID] = $post_count;

      и вместо admin укажите логин админа.

      1. 25 апреля 2014 г. в 14:12 / ответ на коммент Dimox

        Спасибо, сейчас проверю. А можно как либо упростить код, он создаёт очень много запросов.

        1. 25 апреля 2014 г. в 14:24 / ответ на коммент Страшный

          Может быть как-то и можно, но я в таких тонкостях не силен.

Ваш комментарий

Жирный текст

Ссылка

Цитата

Внутристрочный код

CSS-код

HTML-код

JavaScript-код

PHP-код