Статьи

Показать список авторов на WordPress

В некоторых блогах важно регулярно публиковать сообщения, но это может быть сложно, если ведение блога не является вашей работой на полный рабочий день.

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

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

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

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

Создать шаблон страницы

Сначала начните с создания нового шаблона страницы для вашего списка всех авторов.

/*
Template Name: Display All Authors
*/


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

Это вернет массив всех пользователей на вашем сайте, он принимает ряд различных параметров, таких как:

  • blog_idидентификатор текущего блога, если не включен многосайтовый доступ и не указан другой идентификатор
  • роль — ограничить возвращаемых авторов указанной ролью.
  • include — массив идентификаторов. Будут возвращены только пользователи, соответствующие этим идентификаторам.
  • исключить — массив идентификаторов. Пользователи, соответствующие этим идентификаторам, не будут возвращены, независимо от других аргументов.
  • meta_keymeta_key в таблице wp_usermeta для возвращаемого meta_value .
  • meta_value — значение мета-ключа.
  • meta_compare — оператор для проверки ‘meta_value’. Возможные значения: ‘! =’, ‘>’, ‘> =’, ‘<‘ Или ‘<=’. Значением по умолчанию является «=».
  • meta_query — множественный массив meta_key / meta_value в стиле WP_Query.
  • orderby — сортировка по «ID», «логин», «nicename», «email», «url», «зарегистрированный», «display_name» или «post_count».
  • заказ — ASC (по возрастанию) или DESC (по убыванию).
  • смещение — первые n пользователей, которые будут пропущены в возвращенном массиве.
  • search — Используйте этот аргумент для поиска пользователей по адресу электронной почты, URL, идентификатору или имени пользователя (в настоящее время это не включает отображаемое имя).
  • число — ограничить общее количество возвращаемых пользователей.
  • count_total — False по умолчанию.
  • fields — Какие поля включать в возвращаемый массив По умолчанию «все». Если установлено значение ‘all_with_meta’, возвращает массив объектов WP_User с ключами по ID.
  • who — Если установлено значение «авторы», будут возвращены только авторы (уровень пользователя больше 0).

Параметры, которые мы будем использовать, это параметры orderby и order . Это потому, что мы собираемся использовать параметр orderby для отображения авторов в порядке количества написанных ими сообщений. Затем мы будем использовать параметр order, чтобы упорядочить пользователей в порядке DESC, чтобы сначала отображать пользователя с наибольшим количеством сообщений.

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

$allUsers = get_users('orderby=post_count&order=DESC');

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

$users = array();
// Remove subscribers from the list as they won't write any articles
foreach($allUsers as $currentUser)
{
	if(!in_array( 'subscriber', $currentUser->roles ))
	{
		$users[] = $currentUser;
	}
}

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

Информация о пользователе, которую мы собираемся отобразить, — это имя пользователя, изображение пользователя, ссылка на все их сообщения, описание автора и ссылки для добавления метаинформации автора.

<?php
foreach($users as $user)
{
	?>
<div class="author">
<div class="authorAvatar"></div>
<div class="authorInfo">
<h2 class="authorName"></h2>
<p class="authorDescrption"></ p>
<p class="authorLinks"></ p>
<p class="socialIcons"></ p>
		</div>
</div>
<?php
}
?>

Показать Аватар Автора

Для отображения аватара автора мы можем использовать электронную почту автора с функцией get_avatar () для отображения аватара автора.

<div class="authorAvatar">
	<?php echo get_avatar( $user->user_email, '128' ); ?>
</div>

Показать имя автора

Чтобы отобразить имя автора, мы можем использовать значение свойства для объекта пользователя, с которым мы работаем, используя $ user-> display_name ;

<h2 class="authorName"><?php echo $user->display_name; ?></h2>

Показать автора Описание

Для отображения описания автора мы можем использовать функцию get_user_meta (), чтобы получить описание автора.

<p class="authorDescrption"><?php echo get_user_meta($user->ID, 'description', true); ?>

Ссылка на все сообщения автора

Для отображения ссылки на все сообщения автора вы можете использовать функцию get_author_posts_url () .

<p class="authorLinks"><a href="<?php echo get_author_posts_url( $user->ID ); ?>">View Author Links</a>

Отображение другой метаинформации пользователя

Вы можете назначить своим пользователям новую контактную информацию, которую вы можете отобразить в списке авторов, используя функцию get_user_meta () . В этом уроке мы используем эту функцию для отображения ссылок на различные профили пользователей в социальных сетях.

<p class="socialIcons">
<ul>
	<?php
	$website = $user->user_url;
	if($user->user_url != '')
	{
		printf('
<li><a href="%s">%s</a></li>
', $user->user_url, 'Website');
	}
	$twitter = get_user_meta($user->ID, 'twitter_profile', true);
	if($twitter != '')
	{
		printf('
<li><a href="%s">%s</a></li>
', $twitter, 'Twitter');
	}
	$facebook = get_user_meta($user->ID, 'facebook_profile', true);
	if($facebook != '')
	{
		printf('
<li><a href="%s">%s</a></li>
', $facebook, 'Facebook');
	}
	$google = get_user_meta($user->ID, 'google_profile', true);
	if($google != '')
	{
		printf('
<li><a href="%s">%s</a></li>
', $google, 'Google');
	}
	$linkedin = get_user_meta($user->ID, 'linkedin_profile', true);
	if($linkedin != '')
	{
		printf('
<li><a href="%s">%s</a></li>
', $linkedin, 'LinkedIn');
	}
?>
</ul>

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

Шаблон полной страницы

Вот полный шаблон страницы, который вы можете использовать по теме.

<?php
/*
Template Name: Display Authors
*/
// Get all users order by amount of posts
$allUsers = get_users('orderby=post_count&order=DESC');
$users = array();
// Remove subscribers from the list as they won't write any articles
foreach($allUsers as $currentUser)
{
	if(!in_array( 'subscriber', $currentUser->roles ))
	{
		$users[] = $currentUser;
	}
}
?>
<?php get_header(); ?>
<section class="content" role="main">
	<?php
		printf('
<h1>%s</h1>
', the_title());
		foreach($users as $user)
		{
			?>
<div class="author">
<div class="authorAvatar">
					<?php echo get_avatar( $user->user_email, '128' ); ?>
				</div>
<div class="authorInfo">
<h2 class="authorName"><?php echo $user->display_name; ?></h2>
<p class="authorDescrption"><?php echo get_user_meta($user->ID, 'description', true); ?>
<p class="authorLinks"><a href="<?php echo get_author_posts_url( $user->ID ); ?>">View Author Links</a>
<p class="socialIcons">
<ul>
							<?php
								$website = $user->user_url;
								if($user->user_url != '')
								{
									printf('
<li><a href="%s">%s</a></li>
', $user->user_url, 'Website');
								}
								$twitter = get_user_meta($user->ID, 'twitter_profile', true);
								if($twitter != '')
								{
									printf('
<li><a href="%s">%s</a></li>
', $twitter, 'Twitter');
								}
								$facebook = get_user_meta($user->ID, 'facebook_profile', true);
								if($facebook != '')
								{
									printf('
<li><a href="%s">%s</a></li>
', $facebook, 'Facebook');
								}
								$google = get_user_meta($user->ID, 'google_profile', true);
								if($google != '')
								{
									printf('
<li><a href="%s">%s</a></li>
', $google, 'Google');
								}
								$linkedin = get_user_meta($user->ID, 'linkedin_profile', true);
								if($linkedin != '')
								{
									printf('
<li><a href="%s">%s</a></li>
', $linkedin, 'LinkedIn');
								}
							?>
						</ul>
</div>
</div>
			<?php
		}
	?>
</section>
<?php get_footer(); ?>