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ć:
- pole po którym będziemy sortować
- w którą stronę będziemy sortować
- czy wyświetlać gravatara
- 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; } |
Jak użyć podany kod?
Masz 3 rozwiązania:
- wrzuć załączony plik do folderu
wp-content/plugins
, a potem włącz wtyczkę - wrzuć załączony plik do folderu
wp-content/mu-plugins
- dołącz kod do pliku
functions.php
aktualnie używanego motywu
Paweł
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ą.
Marcin Pietrzak
@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.
Paweł
@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.
Marcin Pietrzak
@Paweł: zobacz tutaj (pierwszy wynik szukania: multi author wordpress) może znajdziesz coś, co pomoże rozwiązać Twoje zagadnienie. http://www.hongkiat.com/blog/35-tips-tricks-to-manage-and-handle-multi-author-blogs/
ezin
A czy jestes w stanie zmodyfikować kod i podać jego opcję – listy ale z wykluczeniem administratora serwisu lub jego ID.
Marcin Pietrzak
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.