Lista autorów może przydać się na tych wszystkich serwisach, na które nie są prowadzone przez jedną osobę, a chcielibyśmy wyświetlić listę wszystkich piszących na danym blogu.

Sposobów na utworzenie strony zawierającej listę autorów jest co najmniej kilka, choć wszystkie mniej lub bardziej sprowadzą się do wykorzystania funkcji get_users, która pozwala na pobranie listy użytkowników.

Moim zdaniem najlepszą metodą na umieszczanie tego typu rzeczy jest użycie shortcode’a, ponieważ dzięki temu możemy wyświetlić naszą listę w dowolnym miejscu, a jak ktoś podepnie obsługę shortcode’ów do widgetów, to również tam.

Podany przykład ma cztery parametry, za pomocą których możemy wybrać:

  1. pole po którym będziemy sortować
  2. w którą stronę będziemy sortować
  3. czy wyświetlać gravatara
  4. wielkość wyświetlanego gravatara

Dwa pierwsze parametry przekazywane są do wcześniej wymienionej funkcji. Dodatkowo jest tam wysyłany również parametr „who” za pomocą którego, lista zostaje ograniczona do autorów.

add_shortcode( 'iworks-authors', 'iworks_authors_shortcode' );
function iworks_authors_shortcode( $atts )
{
    extract( shortcode_atts( array(
        'orderby'       => 'name',
        'order'         => 'ASC',
        'gravatar'      => 1,
        'gravatar_size' => 64
    ), $atts ) );
    $args = array(
        'orderby' => $orderby,
        'order'   => $order,
        'who'     => 'authors'
    );
    $authors = get_users( $args );
    if ( empty( $authors ) ) {
        return '';
    }
    $content = '<ol class="authors">';
    $one = '<li class="name_%s">%s<a href="%s" class="author">%s</a></li>';
    foreach ( $authors as $author ) {
        $content .= sprintf(
            $one,
            apply_filters( 'sanitize_title', $author->user_login ),
            $gravatar? get_avatar( $author->ID, $gravatar_size ).' ': '',
            get_author_posts_url( $author->ID ),
            $author->display_name
        );
    }
    $content .= '</ol>';
    return $content;
}
[zip href='http://iworks.pl/wp-content/uploads/2012/05/iworks-authors-shortcode.php-.zip']iworks-authors-shortcode.php.zip[/zip]

Jak użyć podany kod?

Masz 3 rozwiązania:

  1. wrzuć załączony plik do folderu wp-content/plugins, a potem włącz wtyczkę
  2. wrzuć załączony plik do folderu wp-content/mu-plugins
  3. dołącz kod do pliku functions.php aktualnie używanego motywu

Komentarze

Może nie na temat, ale jak zrobić aby dwóch autorów miało dostęp do tego samego postu. Innymi słowy aby twórców było dwóch, etc. Chodzi mi o fizyczny dostęp i rozpoznawanie tego przez WP niżli tylko podpis pod treścią.

@Paweł: czyli takich, których rola jest ograniczona do własnych wpisów? Prawdę mówiąc nie wiem, bo wymagałoby to zmiany bazowych zapytań. Pewnie jest to możliwe, ale pracochłonne i potencjalnie niebezpieczniej. Zawsze możesz zmienić uprawnienia, tak żeby autorzy mogli edytować dowolne wpisy.

@Marcin: tak mniej więcej o to chodzi. Prowadzę pewien projekt na maculatura.pl na którym pisze kilka osób i raz po raz będzie pojawiać się wspólna praca.

A czy jestes w stanie zmodyfikować kod i podać jego opcję – listy ale z wykluczeniem administratora serwisu lub jego ID.

Twoje pytanie zawiera dwa zagadnienia.

Zagadnienie z przekazywaniem/czytaniem parametrów z shortcode’a i można więcej poczytać o tym tutaj: https://codex.wordpress.org/Shortcode_API
Użycie podanych argumentów w funkcji https://codex.wordpress.org/Function_Reference/get_users

Jeżeli natomiast chcesz tylko ograniczyć wyświetlanie konkretnego użytkownika znająć jego ID, to zawsze (choć brzydko) możesz po prostu dodać do parametru exclude:

$args = array(
'orderby’ => $orderby,
'order’ => $order,
'who’ => 'authors’,
'exclude’ => array(1,2,5),
);

Pozdrawiam.

iWorks Marcin Pietrzak

Wykorzystujemy ciasteczka do spersonalizowania treści i reklam, aby oferować funkcje społecznościowe i analizować ruch w naszej witrynie.

Informacje o tym, jak korzystasz z naszej witryny, udostępniamy partnerom społecznościowym, reklamowym i analitycznym. Partnerzy mogą połączyć te informacje z innymi danymi otrzymanymi od Ciebie lub uzyskanymi podczas korzystania z ich usług.

Informacja o tym, w jaki sposób Google przetwarza dane, znajdują się tutaj.