В некоторых блогах важно регулярно публиковать сообщения, но это может быть сложно, если ведение блога не является вашей работой на полный рабочий день.
Для одного человека, чтобы регулярно публиковать потрясающие сообщения в блоге каждый день может занять много времени. По этой причине у многих блогов есть несколько авторов, это помогает поддерживать постоянный и качественный контент для обеспечения лучшего блога.
В блоге одного автора вы обычно находите страницу с информацией об авторе . Вы можете сделать это в блоге с несколькими авторами, но вам также нужно создать страницу, на которой будут отображаться все авторы в блоге, чтобы вы могли ссылаться на каждую из их публикаций.
Если вы хотите создать страницу для отображения всех авторов, у вас есть два варианта, вы можете создать новый шаблон страницы, который позволит вам кодировать макет страницы, чтобы показать всех авторов. Другой вариант — создать шорткод, где пользователь сайта может использовать его для нового содержимого страницы, чтобы создать список всех авторов.
Следует выбрать два варианта, если вы собираетесь добавить эту функцию в плагин или тему. Если вы собираетесь добавить эту функцию в тему, вам следует использовать шаблон страницы, если вы хотите использовать шорткод, то вы должны сделать это с помощью плагина. В этом уроке мы собираемся создать шаблон страницы для отображения всех авторов на сайте .
Создать шаблон страницы
Сначала начните с создания нового шаблона страницы для вашего списка всех авторов.
/* Template Name: Display All Authors */
Следующее, что нам нужно сделать, это получить список всех пользователей на сайте WordPress, которые могут написать сообщение. Это все пользователи, кроме пользователей с ролью подписчика. Лучший способ получить список всех пользователей — использовать функцию get_users () .
Это вернет массив всех пользователей на вашем сайте, он принимает ряд различных параметров, таких как:
- blog_id — идентификатор текущего блога, если не включен многосайтовый доступ и не указан другой идентификатор
- роль — ограничить возвращаемых авторов указанной ролью.
- include — массив идентификаторов. Будут возвращены только пользователи, соответствующие этим идентификаторам.
- исключить — массив идентификаторов. Пользователи, соответствующие этим идентификаторам, не будут возвращены, независимо от других аргументов.
- meta_key — meta_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(); ?>