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.
- ID użytkownika.
- Jego login.
- Jego imię wyświetlane.
- Zmienna
$file
pobiera link naszej strony z ostatnim slashem. - 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
Link do strony z autorami Anomalium nie działa.
odpowiedzJak i sama strona, ale z tego co widzę to 'strona w budowie’.
odpowiedzGdybym 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
odpowiedzW 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.
odpowiedzStrona 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
odpowiedzTrzeba było dać screena tej galerii – przezorny zawsze ubezpieczony :)
odpowiedzPanowie 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:)
odpowiedzkurde ucięło mi kod daje całość tu:
http://pokazywarka.pl/7ta0mi/
Stawiam piwo temu kto pomoże:)
odpowiedzNajpierw 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?
Eee, tak :). Wiesz czym są szablony stron dla WordPress? Zresztą nawet jeśli nie, to przecież ten artykuł doskonale opisuje co masz zrobić ;).
odpowiedzNo właśnie nie wiem. Byłbym wdzięczny gdybyś mi to dokładnie opisał lub podał GG to napisze do Ciebie.
odpowiedzMatura… czytanie ze zrozumieniem… Bracie, w artykule pisze słowo po słowie co masz zrobić – zrób co pisze, to się zrobi.
odpowiedzPlik zapisujemy pod nazwą nasi-autorzy.php ale wlasnie nie wiem jaki plik…
odpowiedzI 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<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 ?
odpowiedznie działa u mnie tego nie ma w page.php
odpowiedzfunkcji the_content();
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?
odpowiedzw którym konkretnie miejscu w pętli mam wpisać użytkownika id i tak dalej?
odpowiedzi skąd mam wziąć ID użytkowników?
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 :]
odpowiedzPoprawiłem, dzięki za informację.
odpowiedz@Szymon: Jak wyświetlić autorów którzy mają napisane więcej niż 3 posty ?
odpowiedzTo powinno być ok:
odpowiedzhttp://wordpress.stackexchange.com/a/31724
Nie jestem programistą :) Jak przystosować to pod kod w poście ???
odpowiedzParse 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???
odpowiedzDobra już pomogło. Ale czemu widać to powójnie? link:http://kamokeg.cba.pl/?author=1
odpowiedzA 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 :)
odpowiedzDodaj własny komentarz