Java, UX, HTML, CSS, WEB-design

Список авторов внешнего интерфейса и поиск пользователей для WordPress

[ad_1]

  • Кристиан Антоэ

  • 0 Комментарии

Список авторов внешнего интерфейса и поиск пользователей для WordPress

  • 11 минут чтения

  • WordPress, Плагины, Шорткоды

Краткое резюме ↬

Эта статья проведет вас через процесс создания страницы интерфейса в WordPress со списком ваших авторов. Мы обсудим, почему вы хотели бы это сделать, мы представим WP_User_Query класс, а потом мы соберем все это вместе

По своей сути WordPress — это надежная издательская платформа. Благодаря красивому и простому в использовании интерфейсу, а также поддержке пользовательских типов сообщений и форматов сообщений, издатели могут делать то, что у них получается лучше всего: написать содержание.

Дальнейшее чтение на SmashingMag:

  • Изменение списков сообщений администратора в WordPress
  • Полезные бесплатные плагины администратора для WordPress
  • Десять вещей, которые должен знать каждый разработчик плагинов для WordPress
  • Внутри панели инструментов WordPress

Еще после прыжка! Продолжить чтение ниже ↓

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

В издательском мире широко используется фраза «вовлечение пользователей». Речь идет о том, чтобы заставить читателей проводить больше времени на веб-сайте, активно искать контент и даже создавать свой собственный. Хотя на эту тему можно написать несколько книг, вот несколько вещей, которые может сделать издатель WordPress:

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

Список авторов и почему это хорошо

список пользователей

Если вы издатель, ваши авторы — ваш самый большой актив. Они создатели контента. Их тексты читают миллионы людей по всему миру.

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

Кодирование идеального списка авторов

Вот чего мы хотим достичь с помощью нашей страницы:

  • Создайте его как плагин WordPress, чтобы нам было легче его повторно использовать;
  • Отображать имя, биографию, количество постов и последний опубликованный пост всех авторов;
  • Разбивайте список на страницы, если у нас много авторов;
  • Сделайте список доступным для поиска.

Представляем WP_User_Query и get_users

То WP_User_Query class позволяет нам запрашивать базу данных пользователей.

Помимо возврата массива пользователей, WP_User_Query возвращает общую информацию о запросе и, самое главное, общее количество пользователей (для пагинации).

Можно использовать WP_User_Query путем передачи ряда аргументов и перечисления вывода.

$my_authors = new WP_User_Query(
  array(
    'blog_id' => $GLOBALS['blog_id'],
    'role' => ’,
    'meta_key' => ’,
    'meta_value' => ’,
    'meta_compare' => ’,
    'include' => array(),
    'exclude' => array(),
    'search' => ’,
    'orderby' => 'login',
    'order' => 'ASC',
    'offset' => ’,
    'number' => ’,
    'count_total' => true,
    'fields' => 'all',
    'who' => ’
));

Мы сосредоточимся только на нескольких аргументах, а не рассмотрим их все:

  • role Это роль пользователя. В нашем примере мы будем запрашивать author.
  • offset Первый n пользователей, которые будут пропущены в возвращаемом массиве.
  • number Ограничьте общее количество возвращаемых пользователей.

У нас также есть get_users класс, который (как WP_User_Query) возвращает количество пользователей на основе заданных параметров.

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

Простой список пользователей с использованием get_users()

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

Если все, что вам нужно, это простой список авторов, вы можете просто использовать wp_list_authorsвот так:

wp_list_authors('show_fullname=1&optioncount=1&orderby=post_count&order=DESC&number=3');

Создание плагина и шорткода с немного большей функциональностью

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

Давайте не будем усложнять. Весь наш плагин будет состоять всего из одного файла: simple-user-listing.php.

<?php
/*
Plugin Name: Simple User Listing
Plugin URI: https://cozmoslabs.com
description: >-
  Create a simple shortcode to list our WordPress users.
Author: Cristian Antohe
Version: 0.1
Author URI: https://cozmoslabs.com
*/

function sul_user_listing($atts, $content = null) {
  global $post;

  extract(shortcode_atts(array(
    "role" => ’,
    "number" => '10'
  ), $atts));

  $role = sanitize_text_field($role);
  $number = sanitize_text_field($number);

  // We're outputting a lot of HTML, and the easiest way
  // to do it is with output buffering from PHP.
  ob_start();

  // Get the Search Term
  $search = ( isset($_GET["as"]) ) ? sanitize_text_field($_GET["as"]) : false ;

  // Get Query Var for pagination. This already exists in WordPress
  $page = (get_query_var('paged')) ? get_query_var('paged') : 1;

  // Calculate the offset (i.e. how many users we should skip)
  $offset = ($page - 1) * $number;

  if ($search){
    // Generate the query based on search field
    $my_users = new WP_User_Query(
      array(
        'role' => $role,
        'search' => '*' . $search . '*'
      ));
  } else {
    // Generate the query
    $my_users = new WP_User_Query(
      array(
        'role' => 'author',
        'offset' => $offset ,
        'number' => $number
      ));
  }

  // Get the total number of authors. Based on this, offset and number
  // per page, we'll generate our pagination.

  $total_authors = $my_users->total_users;

  // Calculate the total number of pages for the pagination
  $total_pages = intval($total_authors / $number) + 1;

  // The authors object.

  $authors = $my_users->get_results();
?>

  <div class="author-search">
  <h2>Search authors by name</h2>
    <form method="get" id="sul-searchform" action="<?php the_permalink() ?>">
      <label for="as" class="assistive-text">Search</label>
      <input type="text" class="field" name="as" id="sul-s" placeholder="Search Authors" />
      <input type="submit" class="submit" name="submit" id="sul-searchsubmit" value="Search Authors" />
    </form>
  <?php
  if($search){ ?>
    <h2 >Search Results for: <em><?php echo $search; ?></em></h2>
    <a href="https://www.smashingmagazine.com/2012/06/front-end-author-listing-user-search-wordpress/<?php the_permalink(); ?>">Back To Author Listing</a>
  <?php } ?>

  </div><!-- .author-search -->

<?php if (!empty($authors))   { ?>
  <ul class="author-list">
<?php
  // loop through each author foreach($authors as $author){
    $author_info = get_userdata($author->ID);
    ?>
    <li>
      <?php echo get_avatar( $author->ID, 90 ); ?>
      <h2><a href="https://www.smashingmagazine.com/2012/06/front-end-author-listing-user-search-wordpress/<?php echo get_author_posts_url($author->ID); ?>"><?php echo $author_info->display_name; ?></a> - <?php echo count_user_posts( $author->ID ); ?> posts</h2>
      <p><?php echo $author_info->description; ?></p>
      <?php $latest_post = new WP_Query( "author=$author->ID&post_count=1" );
      if (!empty($latest_post->post)){ ?>
      <p><strong>Latest Article:</strong>
      <a href="<?php echo get_permalink($latest_post->post->ID) ?>">
        <?php echo get_the_title($latest_post->post->ID) ;?>
      </a></p>
      <?php } //endif ?>
      <p><a href="https://www.smashingmagazine.com/2012/06/front-end-author-listing-user-search-wordpress/<?php echo get_author_posts_url($author->ID); ?>">Read <?php echo $author_info->display_name; ?> posts</a></p>
    </li>
    <?php
  }
?>
  </ul> <!-- .author-list -->
<?php } else { ?>
  <h2>No authors found</h2>
<? } //endif ?>

  <nav id="nav-single" style="clear:both; float:none; margin-top:20px;">
    <h3 class="assistive-text">Post navigation</h3>
    <?php if ($page != 1) { ?>
      <span class="nav-previous"><a rel="prev" href="https://www.smashingmagazine.com/2012/06/front-end-author-listing-user-search-wordpress/<?php the_permalink() ?>page/<?php echo $page - 1; ?>/"><span class="meta-nav">←</span> Previous</a></span>
    <?php } ?>

    <?php if ($page < $total_pages ) { ?>
      <span class="nav-next"><a rel="next" href="<?php the_permalink() ?>page/<?php echo $page + 1; ?>/">Next <span class="meta-nav">→</span></a></span>
    <?php } ?>
  </nav>

  <?php
  // Output the content.
  $output = ob_get_contents();
  ob_end_clean();

  // Return only if we're inside a page. This won't list anything on a post or archive page.

  if (is_page()) return  $output;

}

// Add the shortcode to WordPress.
add_shortcode('userlisting', 'sul_user_listing');
?>

Разрушение кода

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

/*
Plugin Name: Simple User Listing
Plugin URI: https://cozmoslabs.com
description: >-
  Create a simple shortcode to list our WordPress users.
Author: Cristian Antohe
Version: 0.1
Author URI: https://cozmoslabs.com
*/

Создание шорткода

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

function sul_user_listing($atts, $content = null) {
// return our output
}
add_shortcode('userlisting', 'sul_user_listing');

Извлечение наших аргументов шорткода

Мы хотим иметь возможность составлять список пользователей на основе их ролей и контролировать, сколько пользователей отображается на странице. Мы делаем это с помощью аргументов шорткода. Мы добавим шорткод в нашу тему следующим образом: [userlisting role=“author” number=“15”]. Это позволит нам повторно использовать плагин для списка наших подписчиков.

Для этого нам нужно использовать аргументы шорткода:

extract(shortcode_atts(array(
  "role" => ’,
  "number" => '10'
), $atts));

То extract функция импортирует переменные в нашу функцию из массива. Функция WordPress shortcode_atts в основном возвращает массив с нашими аргументами; и мы установим некоторые значения по умолчанию на случай, если ничего не будет найдено.

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

Шорткоды никогда не должны повторяться

Возвращаемое значение функции обработчика шорткода вставляется в вывод содержимого публикации вместо шорткода. Вы должны использовать return и не echo; все, что будет отображено, будет выведено в браузер, но, вероятно, будет отображаться выше всего остального. Вы также, вероятно, получите ошибки типа «заголовки уже отправлены».

Для простоты мы буферизуем вывод через ob_start()поэтому мы помещаем все в объект и возвращаем его, когда закончим.

Настройка наших переменных

Теперь мы можем начать строить наш список авторов. Во-первых, нам нужно настроить несколько переменных:

  • $search Это занимает GET параметр as если он существует.
  • $page То get_query_var для пагинации. Это уже существует в WordPress.
  • $offset Вычислить смещение (т.е. сколько пользователей пропустить при разбивке на страницы).
  • $total_authors Получите общее количество авторов.
  • $total_pages Подсчитайте общее количество страниц для нумерации страниц.

Запрос

На самом деле у нас есть два запроса: список по умолчанию и результаты поиска.

if ($search){
  // Generate the query based on search field
  $my_users = new WP_User_Query(
    array(
      'role' => $role,
      'search' => '*' . $search . '*'
    ));
} else {
  // Generate the query
  $my_users = new WP_User_Query(
    array(
      'role' => 'author',
      'offset' => $offset ,
      'number' => $number
    ));
}

WP_User_Query->total_users и WP_User_Query->get_results

WP_User_Query предоставляет нам, среди прочего, две полезные функции:

  • total_users Возвращает общее количество авторов. Это, смещение и количество пользователей на странице будут генерировать нашу разбивку на страницы.
  • get_results Возвращает объект только с авторами. Это похоже на то, что get_users() возвращается.

Форма поиска

Для поиска мы используем простую форму. Здесь нет ничего сложного.

<div class="author-search">
<h2>Search authors by name</h2>
  <form method="get" id="sul-searchform" action="<?php the_permalink() ?>">
    <label for="as" class="assistive-text">Search</label>
    <input type="text" class="field" name="as" id="s" placeholder="Search Authors" />
    <input type="submit" class="submit" name="submit" id="searchsubmit" value="Search Authors" />
  </form>
<?php
if($search){ ?>
  <h2 >Search Results for: <em><?php echo $search; ?></em></h2>
  <a href="https://www.smashingmagazine.com/2012/06/front-end-author-listing-user-search-wordpress/<?php the_permalink(); ?>">Back To Author Listing</a>
<?php } ?>

</div><!-- .author-search -->

Пользовательские данные и список авторов

Перебрать наши результаты довольно просто. Однако получение информации о пользователях в WordPress немного сбивает с толку. Видите ли, есть много способов получить пользовательские данные. Мы могли бы получить его непосредственно из возвращенного запроса; мы могли бы использовать общие функции, такие как get_userdata, get_user_meta, the_author_meta а также get_the_author_meta; или мы могли бы даже использовать специальные функции, такие как the_author_link а также the_author_posts.

мы просто будем использовать get_userdata плюс две другие функции: get_author_posts_url а также get_avatar.

<?php if (!empty($authors))   { ?>
  <ul class="author-list">
<?php
  // loop through each author foreach($authors as $author){
    $author_info = get_userdata($author->ID);
    ?>
    <li>
      <?php echo get_avatar( $author->ID, 90 ); ?>
      <h2><a href="https://www.smashingmagazine.com/2012/06/front-end-author-listing-user-search-wordpress/<?php echo get_author_posts_url($author->ID); ?>"><?php echo $author_info->display_name; ?></a> - <?php echo count_user_posts( $author->ID ); ?> posts</h2>
      <p><?php echo $author_info->description; ?></p>
      <?php $latest_post = new WP_Query( "author=$author->ID&post_count=1" );
      if (!empty($latest_post->post)){ ?>
      <p><strong>Latest Article:</strong>
      <a href="<?php echo get_permalink($latest_post->post->ID) ?>">
        <?php echo get_the_title($latest_post->post->ID) ;?>
      </a></p>
      <?php } //endif ?>
      <p><a href="https://www.smashingmagazine.com/2012/06/front-end-author-listing-user-search-wordpress/<?php echo get_author_posts_url($author->ID); ?>">Read <?php echo $author_info->display_name; ?> posts</a></p>
    </li>
    <?php
  }
?>
  </ul> <!-- .author-list -->
<?php } else { ?>
  <h2>No authors found</h2>
<? } //endif ?>

Пагинация

Нам нужна нумерация страниц, потому что каждый список будет генерировать два дополнительных запроса. Итак, если бы мы перечисляли 100 человек, у нас было бы 200 дополнительных запросов на страницу. Это немного много, поэтому нумерация страниц действительно необходима. В противном случае для веб-сайтов со многими авторами нагрузка может стать настолько большой, что сайт зависнет.

<nav id="nav-single" style="clear:both; float:none; margin-top:20px;">
  <h3 class="assistive-text">Post navigation</h3>
  <?php if ($page != 1) { ?>
    <span class="nav-previous"><a rel="prev" href="https://www.smashingmagazine.com/2012/06/front-end-author-listing-user-search-wordpress/<?php the_permalink() ?>page/<?php echo $page - 1; ?>/"><span class="meta-nav">←</span> Previous</a></span>
  <?php } ?>

  <?php if ($page < $total_pages ) { ?>
    <span class="nav-next"><a rel="next" href="<?php the_permalink() ?>page/<?php echo $page + 1; ?>/">Next <span class="meta-nav">→</span></a></span>
  <?php } ?>
</nav>

Последние мысли

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

  • Перечислите сотрудников вашей компании;
  • Демонстрация пользователей, выигравших конкурс (путем перечисления пользователей с ролью «победителей»);
  • Представьте отделы вашей компании, каждый со своей командой (в зависимости от ролей пользователей).

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

Вы использовали что-то подобное для проекта? Если это так, дайте нам знать в комментариях!

Сокрушительная редакция
(аль)



[ad_2]
Source: https://smashingmagazine.com

Заключение

Вы ознакомились с статьей — Список авторов внешнего интерфейса и поиск пользователей для WordPress

Пожалуйста оцените статью, и напишите комментарий.

Похожие статьи

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

Ваш адрес email не будет опубликован.

Краткое описание по статье Список авторов внешнего интерфейса и поиск пользователей для WordPress

Название: Список авторов внешнего интерфейса и поиск пользователей для WordPress . Краткое описание: [ad_1] ⭐ Кристиа . Дата публикации: 17.02.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

Данный сайт посвящен новостям мира и мира технологий . Также тут вы найдете руководства по различным девайсам.

Сколько лет сайту?

Возраст составляет 3 года

Кнопка «Наверх»