WP_LIST_AUTHORS() функция в WordPress: описание, хуки, примеры

WP_LIST_AUTHORS() │ WP 1.2.0

Функция wp_list_authors() предназначена для отображения всех авторов сайта и включает несколько опций для настройки.

Хуки функции

  • wp_list_authors_args
  • pre_wp_list_authors_post_counts_query

Возврат значения

Функция возвращает null (ничего) если аргумент 'echo' установлен в true или строку со списком авторов, если 'echo' установлен в false.

Использование

wp_list_authors( $args );

Аргументы

Функция принимает массив или строку аргументов. Вот основные из них:

  • orderby (string): Как сортировать авторов. Доступные значения: 'nicename', 'email', 'url', 'registered', 'name', и др. По умолчанию: 'name'.
  • order (string): Направление сортировки для orderby. Доступные значения: 'ASC' (по возрастанию) и 'DESC' (по убыванию). По умолчанию: 'ASC'.
  • number (int): Максимальное количество авторов для вывода. По умолчанию: пусто (все авторы).
  • optioncount (true|false): Показывать количество постов автора в скобках. По умолчанию: false.
  • exclude_admin (true|false): Исключать ли учетную запись 'admin', если она существует. По умолчанию: true.
  • show_fullname (true|false): Отображать ли полное имя автора. По умолчанию: false.
  • hide_empty (true|false): Скрывать ли авторов, у которых нет постов. По умолчанию: true.
  • feed (string): Если не пусто, показать ссылку на ленту автора. По умолчанию: пусто.
  • feed_image (string): URL-адрес изображения для ссылки на ленту автора. По умолчанию: пусто.
  • feed_type (string): Тип ленты для ссылки. Возможные значения: 'rss2', 'atom'. По умолчанию: значение функции get_default_feed().
  • echo (true|false): Выводить ли результат или возвращать его. По умолчанию: true.
  • style (string): Если 'list', каждый автор будет обернут в элемент <li>, иначе авторы будут разделены запятыми.
  • html (true|false): Отображать элементы в HTML или в текстовом виде. По умолчанию: true.
  • exclude (int[]|string): Массив или строка ID авторов, которые необходимо исключить. По умолчанию: пусто.
  • include (int[]|string): Массив или строка ID авторов, которые необходимо включить. По умолчанию: пусто.

Примеры

Пример 1: Получение списка авторов сайта

Этот пример показывает, как отобразить авторов сайта:

  • Полное имя автора (show_fullname=1).
  • Количество постов для каждого автора (optioncount=1).
  • Сортировка в обратном порядке (order=DESC) по количеству постов (orderby=post_count).
  • Ограничение по количеству авторов до 3 (number=3).
  • Исключение автора с ником admin из списка.
  • Исключение авторов без постов.
  • Линки на RSS-ленты не отображаются.
wp_list_authors( [
    'show_fullname' => 1,
    'optioncount'   => 1,
    'orderby'       => 'post_count',
    'order'         => 'DESC',
    'number'        => 3
] );

Результат может выглядеть так:

Андрей Андреев (48)
Гарри Смит (42)
Салли Смит (29)

Примечания

  • Использует глобальный объект $wpdb для работы с базой данных WordPress.

Изменения

  • С версии 1.2.0: Введена функция.

Код функции wp_list_authors

function wp_list_authors( $args = '' ) {
    global $wpdb;

    $defaults = array(
        'orderby'       => 'name',
        'order'         => 'ASC',
        'number'        => '',
        'optioncount'   => false,
        'exclude_admin' => true,
        'show_fullname' => false,
        'hide_empty'    => true,
        'feed'          => '',
        'feed_image'    => '',
        'feed_type'     => '',
        'echo'          => true,
        'style'         => 'list',
        'html'          => true,
        'exclude'       => '',
        'include'       => '',
    );

    $parsed_args = wp_parse_args( $args, $defaults );

    $return = '';

    $query_args           = wp_array_slice_assoc( $parsed_args, array( 'orderby', 'order', 'number', 'exclude', 'include' ) );
    $query_args['fields'] = 'ids';

    $query_args = apply_filters( 'wp_list_authors_args', $query_args, $parsed_args );

    $authors     = get_users( $query_args );
    $post_counts = array();

    $post_counts = apply_filters( 'pre_wp_list_authors_post_counts_query', false, $parsed_args );

    if ( ! is_array( $post_counts ) ) {
        $post_counts       = array();
        $post_counts_query = $wpdb->get_results(
            "SELECT DISTINCT post_author, COUNT(ID) AS count
            FROM $wpdb->posts
            WHERE " . get_private_posts_cap_sql( 'post' ) . '
            GROUP BY post_author'
        );

        foreach ( (array) $post_counts_query as $row ) {
            $post_counts[ $row->post_author ] = $row->count;
        }
    }

    foreach ( $authors as $author_id ) {
        $posts = isset( $post_counts[ $author_id ] ) ? $post_counts[ $author_id ] : 0;

        if ( ! $posts && $parsed_args['hide_empty'] ) {
            continue;
        }

        $author = get_userdata( $author_id );

        if ( $parsed_args['exclude_admin'] && 'admin' === $author->display_name ) {
            continue;
        }

        if ( $parsed_args['show_fullname'] && $author->first_name && $author->last_name ) {
            $name = sprintf(
                _x( '%1$s %2$s', 'Display name based on first name and last name' ),
                $author->first_name,
                $author->last_name
            );
        } else {
            $name = $author->display_name;
        }

        if ( ! $parsed_args['html'] ) {
            $return .= $name . ', ';
            continue;
        }

        if ( 'list' === $parsed_args['style'] ) {
            $return .= '
  • '; } $link = sprintf( '%3$s', esc_url( get_author_posts_url( $author->ID, $author->user_nicename ) ), esc_attr( sprintf( __( 'Записи от %s' ), $author->display_name ) ), $name ); if ( ! empty( $parsed_args['feed_image'] ) || ! empty( $parsed_args['feed'] ) ) { $link .= ' '; if ( empty( $parsed_args['feed_image'] ) ) { $link .= '('; } $link .= ''; } else { $link .= $name; } $link .= ''; if ( empty( $parsed_args['feed_image'] ) ) { $link .= ')'; } } if ( $parsed_args['optioncount'] ) { $link .= ' (' . $posts . ')'; } $return .= $link; $return .= ( 'list' === $parsed_args['style'] ) ? '
  • ' : ', '; } $return = rtrim( $return, ', ' ); if ( $parsed_args['echo'] ) { echo $return; } else { return $return; } }

    Теперь у вас есть понятная и структурированная статья о функции wp_list_authors(), которая будет полезна как для начинающих, так и для более опытных пользователей WordPress.

    Leave a Reply

    Ваш адрес email не будет опубликован. Обязательные поля помечены *