Как вывести авторов, недавно проявлявших активность в блоге

Функция для вывода списка авторов, которые недавно проявляли активность в блоге, редактируя или публикуя записи. Можно задать количество авторов в списке, время, на которое будет закэширован результат, и даже ограничить количество опрашиваемых постов.

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

Для этого нужно вставить в файл functions.php:

function get_latest_authors( $number_of_authors = 10 ) {
	if ( false === ( $latest_authors = get_transient( 'latest_authors' ) ) ) {
 
		$args = array(
			'orderby' => 'modified',
			'post_type' => 'post',
			'post_status' => 'publish',
			'numberposts' => '-1'
		);
 
		$count = 1;
		$recent_posts = wp_get_recent_posts( $args );
		$latest_authors_array = array();
 
		foreach( $recent_posts as $the_post ) {
			if ( $count == $number_of_authors ) break;
			if ( ! in_array( $the_post['post_author'], $latest_authors_array ) ) {
				$latest_authors_array[] =$the_post['post_author'];
				$count++;
			}
		}
 
		$latest_authors = '<ul class="cdc-latest-authors">';
		foreach( $latest_authors_array as $author_id ) {
			$latest_authors .= '<li>'.get_the_author_meta( 'display_name', $author_id ).'</li>';
		}
		$latest_authors .= '</ul>';
 
		set_transient( 'latest_authors', $latest_authors, 60 * 60 * 1  ); // 60 секунд * 60 минут * 1 час = 1 час
	}
	return $latest_authors;
}

Эта функция выводит 10 авторов, которые последними редактировали или публиковали посты. Количество авторов задается параметром [code inline=»yes»]$number_of_authors = 10 — вы можете изменить его.

Чтобы функция не терзала базу данных каждый раз при формировании страницы, в ней задается период опросов set_transient = 60 секунд * 60 минут * 1 час = 1 час — его вы тоже можете изменить.

Так же можно изменить и количество проверяемых постов — если у вас большая активность, и за день редактируется большое количество постов (допустим, 100-200), то выуживание их статуса из базы данных каждый час может вызвать повышение нагрузки на хостинг. Чтобы этого не произошло, можно ограничить это количество, указав [code inline=»yes»]’numberposts’ => ‘-1’ не -1 (проверять все посты), а, скажем, 50 — будут проанализированы только 50 постов, которые были отредактированы последними. Однако тут может возникнуть ситуация, что в этих 50 постах не наберется запланированное количество авторов (10) — тут нужно нужно поэкспериментировать. Если же количество постов в районе не сотен, а десятков, то можно сканировать и все посты подряд.

Для того, чтобы вывести список авторов, нужно использовать:

 

Ник каждого автора будет ссылкой на архив постов, им написанных.

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий