publikacja: 25 stycznia 2010, autor: , komentarzy 26 http://wpninja.pl/artykuly/wyswietlamy-wszystkich-autorow-naszego-bloga/

Wyświetlamy wszystkich autorów naszego bloga

Wyświetlamy wszystkich autorów naszego bloga

Nie ma to jak zostać zapytanym o to, jak się stworzyło pewną funkcjonalność na stronie z prośbą o wyjaśnienie, człowiek czuje się dumny :). Pytanie brzmiało mniej więcej tak: "Podoba mi się ta strona wyświetlająca członków zespołu. Jak można coś takiego zrobić w WordPressie?"

Najpierw – wtyczka

Potrzebujemy wpierw odpowiedniej wtyczki, która pozwoli nam na wgranie i przypisanie zdjęć do autorów. Nie będziemy tutaj pisać nic własnego, wykorzystamy za to rozwiązanie już gotowe. Wtyczka nazywa się User Photo i jest bajecznie prosta w użyciu. Instalujemy i wgrywamy zdjęcie autora poprzez panel jego profilu, a następnie na chwilę o wtyczce zapominamy, musimy bowiem napisać kod strony.

Szablon strony

Najpierw otwieramy plik page.php. Na samej górze, jeszcze przez funkcją get_header(); wklejamy coś takiego:

<?php
/*
Template Name: Nasi autorzy
*/
?>

Plik zapisujemy pod nazwą nasi-autorzy.php. Tym oto sposobem stworzyliśmy szablon strony, który podepniemy wkrótce pod stronę stworzoną przez panel WordPressa. Czas zająć się właściwym kodem do wyświetlenia autorów.

Wyświetlamy autorów

Zaraz poniżej funkcji the_content(); wyświetlającej zawartość naszej strony, którą to wpisujemy w czasie edycji strony z poziomu panelu administracyjnego WP, wklejamy pierwsze linie kodu:

<ul id='the_team'>
<?php
$wp_znajdz_uzytkownikow = $wpdb->get_results("SELECT * FROM $wpdb->users ORDER BY ID");

Tak oto otworzyliśmy składnię PHP (poprzez tag <?php), oraz stworzyliśmy zapytanie do bazy danych $wp_znajdz_uzytkownikow – wyszuka nam ono w bazie wszystkich użytkowników z odpowiedniej tabeli w bazie danych i uszereguje ich według identyfikatora liczbowego. Zwróćcie proszę uwagę na początkowy fragment <ul id='the_team'> – posłuży on później do dodania stylów CSS.

Jedziemy dalej, czas dla każdego użytkownika coś wyświetlić, musimy więc stworzyć pętlę.

foreach ( $wp_znajdz_uzytkownikow as $uzytkownikid ) {
$user_id       = (int) $uzytkownikid->ID;
$user_login    = stripslashes($uzytkownikid->user_login);
$display_name  = stripslashes($uzytkownikid->display_name);
 
$file = get_option('home') . '/';
$link = $file . '?author=' . $user_id;

Pętla foreach otworzona. W pętli przypisujemy kolejne zmienne, po kolei od pierwszego wiersza.

  1. ID użytkownika.
  2. Jego login.
  3. Jego imię wyświetlane.
  4. Zmienna $file pobiera link naszej strony z ostatnim slashem.
  5. Zmienna $link przypisuje do wcześniejszego linka parametr ?author oraz ID użytkownika, dzięki czemu stworzymy linka do strony tego autora.

Pozostaje nam wyświetlić dane i zamknąć kod.

?><li><?php echo '<a href="' . $link . '" title="' . $display_name . '">';?><?php echo userphoto($user_id, '', '', array(style => 'width:100px;height:100px;'), get_template_directory_uri() . '/default-avatar.gif'); ?><br /><span><?php echo $display_name; ?></span></a></li>
<?php
}
?>
</ul>

Teraz wyjaśniamy. Funkcja userphoto(); to zmienna z naszej wcześniejszej wtyczki, wyświetla ona zdjęcie użytkownika w formacie 100×100 pixeli. Jeśli zdjęcia nie ma, ta sama funkcja za pomocą get_template_directory_uri() . '/default-avatar.gif' pobierze standardowe zdjęcie z folderu naszego szablonu. Dalej, <?php echo $display_name; ?> wyświetli nam nazwę użytkownika poniżej zdjęcia :). Na końcu jeszcze za pomocą nawiasu } zamykamy pętlę foreach i cały kod jest gotowy!

Stylujemy

Teraz tylko dodać style CSS:

#the_team {
margin:0px;
padding:0px;
list-style:none;
}
#the_team li {
display:block;
float:left !important;
padding:4px;
text-align:center;
}
#the_team li:hover {
background:#eee;
}
#the_team li a {
color:#444;
font-family:"Georgia",Times,serif;
font-style:italic;
}
#the_team li a:hover {
text-decoration:none;
}

Oczywiście dodajemy ten kod do naszego pliku style.css – i całość pięknie wygląda :). Teraz już tylko tworzymy w WordPressie nową stronę i przypisujemy jej odpowiedni szablon, a następnie cieszymy się pięknym wykazem naszych autorów.

Komentarze

  1. Piotr Sajnog 7 lat temu:

    Link do strony z autorami Anomalium nie działa.

    odpowiedz
  2. covalic 7 lat temu:

    Jak i sama strona, ale z tego co widzę to ‚strona w budowie’.

    odpowiedz
  3. michal 7 lat temu:

    Gdybym tylko wczoraj mój RSS pokazał ten artykuł :(
    zaoszczędził bym kilka godzin problemów :)

    ok, a to zapytanie generujące listę autorów posortowanych ze względu na ilość artykułów.

    $wp_znajdz_uzytkownikow = $wpdb->get_results(„SELECT post_author as ID, COUNT(*)as art FROM $wpdb->posts WHERE post_status = ‚publish’ GROUP BY post_author ORDER BY art DESC”);

    w zmiennej $wp_znajdz_uzytkownikow->art jest oczywiście ilość artykułów

    może komuś się przyda, ta drobna modyfikacja

    odpowiedz
    1. Jacek 5 lat temu:

      W którym miejscu wstawić ten kod ? Zależy mi na tym żeby wyświetlało tylko tych userów którzy coś napisali na stronie. Pozdrawiam.

      odpowiedz
  4. Wojciech Usarzewicz 7 lat temu:

    Strona nie działa, bo Cal.pl to amatorzy, a nie firma hostingowa ;). W każdym razie – tam były takie kwadratowe zdjątka z odsyłaczami do stron autorów :P

    odpowiedz
  5. JKN 7 lat temu:

    Trzeba było dać screena tej galerii – przezorny zawsze ubezpieczony :)

    odpowiedz
  6. aniec2 7 lat temu:

    Panowie mam problem:
    Miałem kod:

    ID, 'showcase_image', $single = true);
    $showcase_color = get_post_meta($post->ID, 'showcase_color', $single = true);
    if (!empty($showcase_image)) {
    ?>
    <li style="background:#"><a href=""><img src="" alt="" />

    Zamieniłem na:

    have_posts()) : while ($my_query->have_posts()) : $my_query->the_post();
    $showcase_image = get_post_meta($post->ID, 'showcase_image', $single = true);
    $showcase_color = get_post_meta($post->ID, 'showcase_color', $single = true);
    if (!empty($showcase_image)) {
    ?>
    <li style="background:#"><a href=""><img src="" alt="" />

    <?php endif; ?

    Ale mimo to nie wyświetla mi obrazów ze stron. W czym może być problem? Czekam na forum wpninju co by nie spamować w komentarzach:)

    odpowiedz
  7. aniec2 7 lat temu:

    kurde ucięło mi kod daje całość tu:

    http://pokazywarka.pl/7ta0mi/

    Stawiam piwo temu kto pomoże:)

    odpowiedz
  8. pio 7 lat temu:

    Najpierw otwieramy plik page.php. Na samej górze, jeszcze przez funkcją get_header(); wklejamy coś takiego:

    Plik zapisujemy pod nazwą nasi-autorzy.php. Tym oto sposobem stworzyliśmy szablon strony, który podepniemy wkrótce pod stronę stworzoną przez panel WordPressa. Czas zająć się właściwym kodem do wyświetlenia autorów.

    Mam utworzyć osobną stronkę, plik nasi-autorzy.php
    ?

    odpowiedz
  9. Wojciech Usarzewicz 7 lat temu:

    Eee, tak :). Wiesz czym są szablony stron dla WordPress? Zresztą nawet jeśli nie, to przecież ten artykuł doskonale opisuje co masz zrobić ;).

    odpowiedz
  10. pio 7 lat temu:

    No właśnie nie wiem. Byłbym wdzięczny gdybyś mi to dokładnie opisał lub podał GG to napisze do Ciebie.

    odpowiedz
  11. Wojciech Usarzewicz 7 lat temu:

    Matura… czytanie ze zrozumieniem… Bracie, w artykule pisze słowo po słowie co masz zrobić – zrób co pisze, to się zrobi.

    odpowiedz
  12. pio 7 lat temu:

    Plik zapisujemy pod nazwą nasi-autorzy.php ale wlasnie nie wiem jaki plik…

    odpowiedz
  13. Wojciech Usarzewicz 7 lat temu:

    I dlatego na maturze jest czytanie ze zrozumieniem… Otwierasz page.php, wklejasz kod, zapisujesz pod inną nazwą, dotarło? Bo jak nie to zalecam kilkadziesiąt razy przeczytać ten fragment, może dotrze, ja cierpliwości już nie mam.

    odpowiedz
  14. abc 7 lat temu:

    <div class="post hentry" id="post-„>

    <?php the_content('Read the rest of this page »’); ?>

    get_results(„SELECT * FROM $wpdb->users ORDER BY ID”);
    Pages: ‚, ‚after’ => ”, ‚next_or_number’ => ‚number’)); ?>

    <?php edit_post_link('Edit this entry.', '’, ”); ?>

    co tu jest zle?

    gdzie dodac pozostalą część kodu poza css ?

    odpowiedz
  15. wordpresowicz 7 lat temu:

    nie działa u mnie tego nie ma w page.php
    funkcji the_content();

    odpowiedz
  16. Koper 6 lat temu:

    Kod wyświetla wszystkich użytkowników a nie autorów:-)

    Jak zatem wyświetlić wszystkich userów którzy napisali jakiś post? Przychodzi mi do głowy pomysł aby z tabeli wyciągnąć inne/inaczej informacje ale to przerasta już moje możliwości.

    A może jest jakiś prostszy sposób?

    odpowiedz
  17. Kasia 6 lat temu:

    w którym konkretnie miejscu w pętli mam wpisać użytkownika id i tak dalej?
    i skąd mam wziąć ID użytkowników?

    odpowiedz
  18. Colin 5 lat temu:

    Dopatrzyłem się małego błędu : tam gdzie piszesz w pierwszych linijkach tego postu o tym, jak to dostałeś tą wiadomość jest „Podobna mi się(…)”, powinno być „Podoba mi się(…)”. :)

    Poza tym bardzo ciekawe i sam bym może nawet spytał o coś takiego :]

    odpowiedz
  19. Szymon Skulimowski 5 lat temu:

    Poprawiłem, dzięki za informację.

    odpowiedz
  20. Anna 5 lat temu:

    @Szymon: Jak wyświetlić autorów którzy mają napisane więcej niż 3 posty ?

    odpowiedz
    1. Szymon Skulimowski 5 lat temu:

      To powinno być ok:
      http://wordpress.stackexchange.com/a/31724

      odpowiedz
    2. Anna 5 lat temu:

      Nie jestem programistą :) Jak przystosować to pod kod w poście ???

      odpowiedz
  21. Kamokeg 5 lat temu:

    Parse error: syntax error, unexpected ‚<' in /var/www/virtual//wp-content/themes/LeetPress v1.2.1/leetpress/kat.php on line 26 czemu tak się dzieje???

    odpowiedz
  22. Kamokeg 5 lat temu:

    Dobra już pomogło. Ale czemu widać to powójnie? link:http://kamokeg.cba.pl/?author=1

    odpowiedz
  23. jachu 4 lata temu:

    A czemu nie użyć po prostu

    get_users(‚meta_key=authortype&meta_value=’ . $type . ‚&orderby=post_count&order=desc&fields=all_with_meta’);

    Akurat sobie wyróżniłem różne typy użytkowników – ekspert, redakcja .. sortowanie wg ilości wpisów :)

    odpowiedz

Dodaj własny komentarz