-
data publikacji: 25.03.2009
Query_posts, czyli jak ujarzmić loopa część 1.
kategoria: Wordpress autor: palmiak
WordPress, wbrew temu co myśli o nim wiele osób, od długiego czasu nie służy tylko do blogów. Chociażby dzięki funkcji query_posts(), możemy zachęcić naszego WordPressa do wyświetlania tylko tych wpisów które chcemy zobaczyć. W tym wpisie postaram się przedstawić Wam kilka przykładów zastosowania tej funkcji.
The Loop w wersji podstawowej
Loop to nic innego jak pętla, dzięki której wyświetlane są wpisy. Do zastosowań blogowych najczęściej wystarcza jej podstawowa forma, czyli:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
nasz wpis
<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>Oczywiście jest tego kilka drobnych modyfikacji, ale sprowadza się to wszystko właśnie do tego. Dzięki temu kodowi WP wypisuje albo najnowsze wpisy (strona główna), albo wpisy z poszczególnej kategorii (archiwa) etc.
Kategorie
Załóżmy, że nie chcemy aby na stronie głównej pokazywały nam się wpisy z kategorii o ID=3. By to zrobić wystarczy skorzystać z funkcji
query_posts()naindex.php:<?php query_posts('cat=-3'); ?><?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
nasz wpis
<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>
Jak łatwo zauważyć
query_posts()umieszczamy przed loopem, a całą resztą zajmują się argumenty tej funkcji. W naszym przypadkucat=-3. Analogicznie, jeżeli chcemy wyświetlić tylko wpisy z kategorii o ID=3 to piszemy cat=3.A co jeżeli nie chcemy, żeby userzy widzieli kategorię o ID'ach 2,3,4?
cat=-2,-3,-4.Utrudnijmy sobie teraz zadanie i spróbujmy wyświetlić wpisy z kategorii o ID=7 z roku 2007.
cat=7&year=2007.Jak ktoś ma ochotę może jeszcze spróbować pobawić się z kolejnością wyświetlania dodając
order=ASC|DESC. Jak już jesteśmy przy kolejności warto też wiedzieć po czym sortujemy. Jeżeli byśmy chcieli posortować alfabetycznie wpisy byśmy musieli napisać:order=ASC&orderby=title. Jeżeli byśmy chcieli wypisać kilka losowych postów korzystamy zorderby=rand.Nic nie stoi nam też na drodze, by zamiast ID kategorii korzystać z jej nazwy -
category_name=wordpress. Nietrudno się domyślić co to zrobi.Na koniec pewien rarytasik. Bardzo przydatny, jeżeli chcemy zrobić zaawansowaną wyszukiwarkę. Załóżmy, że chcemy wyświetlić wpisy, które są jednocześnie w kategorii o ID=2 i o ID=7. Można oczywiście bawić się w pisanie zapytań SQLowych, jednak można prościej - array('category__and' => array(2,7)).
Z kategoriami umiemy już prawie wszystko. Przedstawię Wam jeszcze cztery przydatne opcje:
Offset służy do pominięcia określonej przez nas liczby wpisów. Przydaje się to kiedy robimy dwa loopy na stronie. W pierwszym wyświetliliśmy 2 wpisy, więc w drugim warto by było je pominąć. Żeby to zrobić wystarczy napisać
offset=2i już.Posts_per_page - jak sama nazwa mówi - określamy ile wpisów ma być wyświetlonych na stronie. Nadpisuje to naszą defaultową wartość, którą podaliśmy w panelu administracyjnym.
Showposts - wyświetla określoną liczbę wpisów. Chcemy pokazać trzy wpisy to piszemy
showposts=3.Paged - służy do wyświetlenia wpisów z określonej strony. Jeżeli mamy np. 10 wpisów, na każdej stronie pokazują się 3 to pisząc paged=2 pokażą się wpisy nr 4,5 i 6.
Pojedyncze wpisy, strony
Bez zbędnego owijania w bawełnę. Jeżeli chcemy pokazać wpis o ID=666 to korzystamy z
p=666. Możemy też odwołać się za pomocą nazwyname=tytul.Gdy chcemy wyświetlić konkretną stronę (tym razem ID=777) to korzystamy z
page_id=777lub (jeżeli wolimy nazwę)pagename=wpis.Przy okazji warto zapoznać się z tym co napisał Szymon a'propos wymuszenia wyświetlania zajawek. Z własnego doświadczenia mogę powiedzieć, że się to bardzo często łączy wyświetlaniem pojedynczego wpisu czy strony za pomocą loopa.
Autorzy
Na zakończenie troszkę o wyświetlaniu wpisów danego autora. Gdybym chciał pokazać swoje wpisy to po prostu piszę
author=1(bo takiego mam ID'a) lubauthor_name=palmiak. Oczywiście możemy to poszerzyć o sortowania, ilość wpisów etc etc. Nie będę jednak tego powtarzał.Podsumowanie
Jak wspominałem na początku - WP naprawdę ma duże możliwości i może służyć jako mały/średni CMS. Jak widzicie po powyższym wpisy można wypisywać na wiele różnych sposobów - wg daty, tytułu, losowo, tylko określonego autora. Nic nie stoi także na przeszkodzie, żeby za pomocą php dopisać do tego dodatkową funkcjonalność. Zapraszam więc do odpalenia WP i eksperymentów - dopiero wtedy zobaczycie z czym to się je.
W kolejnej części skupię się głównie na tagach oraz custom_fields'ach.
ps. jak widzicie ostatnio troszkę mało rzeczy się ukazuje - po prostu też drobny kryzys nas trafił. Mam nadzieję, że niebawem sytuacja się poprawi i powrócimy do starego trybu publikacji. Ciągle jednak żyjemy i mamy się dobrze.
-
108 Responses to “Query_posts, czyli jak ujarzmić loopa część 1.”
Leave a Reply
Komentarze
Kategorie
Top 10
hotelpalermo: Jak poprawnie osadzić Flasha w kodzie (X)HTML strony?
Michał: jQuery Cycle
Windscreen: Inspirujące strony www: wrzesień 2010
EMAAR MGF GURGAON: Query_posts, czyli jak ujarzmić loopa część 1.
Tomek: Cforms, czyli zaawansowane formularze w Wordpressie
Wypadek: FeedWordPress – czyli jak agregować RSSy
medicine forum: Query_posts, czyli jak ujarzmić loopa część 1.
get rid of inc: Query_posts, czyli jak ujarzmić loopa część 1.
pikolo: Skórka z własnym panelem administracyjnym
buy ritalin online: Query_posts, czyli jak ujarzmić loopa część 1.
- CMSy Artykuły dotyczące różnego rodzaju systemów zarządzania treścią CMS.
- Flash Podstawowe informacje pomocne przy tworzeniu animacji w Adobe Flash.
- Fotografia Samouczki dotyczące nie tylko robienia zdjęć ale też ich cyfrowej obróbki.
- Grafika Ogólnie pojęta grafika komputerowa, od inspiracji, po tworzenie layoutów oraz mniejszych form graficznych.
- Inne tutoriale wordpressowe Wszystkie inne zagadnienia dotyczące WordPressa.
- Inspiracje Inspirujące materiały graficzne z dziedziny projektowania stron www, projektów DTP, digital painting, itp.
- Obróbka zdjęć Techniki retuszu fotografii cyfrowych.
- Rysunek Tworzenie rysowanych ilustracji w Adobe Photoshop.
- Skóry do Wordpressa Darmowe oraz płatne – najlepsze skóry do WordPressa.
- Skrypty client-side
- Skrypty server-side
- Tutoriale
- Webdesign Tutoriale z zakresu projektowania stron www i grafiki użytkowej na rzecz internetu.
- Wieczór z Open Source
- Wordpress Ulubieniec naszej publiczności CMS WordPress: nowości, tricki, wtyczki, skóry i wszystko to co może przydać się przy korzystaniu z tego systemu.
- Wtyczki do Wordpressa Recenzje oraz instrukcje najbardziej popularnych i najbardziej niezbędnych pluginów do WordPressa.
- XHTML/CSS Ciekawostki z dziedziny kodowania stron www: XHTML, CSS, jQuery.
Najnowsze newsy
Wieczór z Open Source 2010
Jak co roku WSINF organizuje konferencję Wieczór z Open Source.
Chciałbym zaprosić was na tegoroczna konferencję Wieczór z Open Source 2010! Czytaj dalej
Grafart.org i WACOM zapraszają na konkursy!
Witam!
Myślę, że czas najwyższy nadmienić, że za niedługi czas zostanie zorganizowany pierwszy z trzech konkursów, w których główną nagrodą będą tablety firmy WACOM!
Za miejsca drugie oraz trzecie nagrodami będą kubki i koszulki firmy WACOM oraz magazyny graficzne PSD PHOTOSHOP oraz COMPUTERARTS.
Czytaj dalej
Zapraszamy na forum graficzne Graffika.pl
Każda osoba interesująca się grafiką komputerową ma czasami ochotę porozmawiać o swoich pracach, posłuchać rad, krytyki i pochwał innych osób. Idealnym miejscem na realizowanie takich potrzeb jest forum graficzne Graffika.pl.
Czytaj dalej
Polecane strony
- No bookmarks avaliable.























Ciekawy artykuł
Na pewno się przyda
Merci pour cet article. C'est tout ce que je peux dire. Vous avez très certainement fait ce blog en quelque chose de spécial. Vous savez bien ce que vous faites, vous avez couvert bases.Thanks tellement!
czekam na 2 część
A czy istnieje możliwość wyświetlenia stron albo kategorii podrzędnych, można tak array(’category__and’ => array(2,7)) ale chodzi mi o to żeby po dodaniu podkategorii nie trzeba było dopisywać jej do szablonu a parametr child_of to chyba w tym przypadku nie działa.
a jaka funkcja odpowiada za niewyświetlanie postów z danej kategorii?
Jest napisane. cat=-ID (po prostu minusik stawiasz przed ID kategorii i już)
Gdy dam
wyświetlaja mi się wpisy z różwnych kategorii.
A gdy nie napisz minusa czyli
wszystko jest ok, tylko wyświetla się 6 wpisów (ustawione by po tyle się wyświetlało) i jest link do starszych wpisów, a na tej następnej stronie te same wpisy…
oj, uciekł kod
Gdy dam
?php query_posts('cat=-16'); ?
[...] czyli
?php query_posts('cat=16'); ?
[...]
yasc, cat=-2,-3,-4
pomijasz tą której nie chcesz
To powiedzcie mi jeszcze tylko jak zrobić coś takiego:
- najpierw miejsce na wyróżniony artykuł (ostatni wpis z wyróżnionej kategorii), czyli cat=3&showposts=1
- niżej (drugi loop) na stronie głównej reszta artykułów z wyłączeniem tego JEDNEGO wyróżnionego, czyli cat=-3&……… ?
Po prostu nie chcę, żeby wyróżniony art pojawiał się dwa razy na stronie głównej ale reszta artów z wyróżnionej kategorii ma się pojawiać.
Wszystko dotyczy TYLKO strony głównej – na /page/2/ itd ma być wszystko standardowo
Proszę o pomoc, bo kombinuję i nic :/
Do tego zauważyłem, że na każdej podstronie (/page/x/) mam taką samą zawartość :/
Tak na szybko z pracy.
Najpierw tak jak zrobiłeś. czyli cat=3&showposts=1 potem zaś cat=3&offset=1(by przeskoczyć ten pierwszy)&posts_per_page=10(ilość wpisów na podstronie).
Powinno być wtedy ok.
That’s not just the best asnwer. It’s the bestest answer!
Jednakże problem z tą samą zawartością na każdej stronie zostaje…
Sprawdziłem. Nie działa. Tzn wystarczy dopisać paged=$paged, czy w sumie:
query_posts(“cat=3&offset=1&posts_per_page=10&paged=$paged”);
Mi to nie działa, wpisy nadal te same.
Skontaktuj się ze mną przez email
Kontakt mailowy kontaktem mailowym, ale warto by było ustalić co nie działa. Powiedz mi czy skopiowałeś to co napisałem czy przepisałeś ręcznie? Bo jeżeli to pierwsze to muszę zastrzelić WP, za używanie tych cudzysłowów zamiast normalnych. Po prostu napisz zwykłe cudzysłowy zamiast tego na co wp zamienia.
Zawsze poprawiam kod
ma tak
?php query_posts(‘cat=3&posts_per_page=3&paged=$paged’); ?
chciałbym ci dać link, ale tu nie moge, ponieważ projekt nie może zostać jeszcze ujawniony
Już widze błąd. Normalny cudzysłów czyli ” a nie ‘ inaczej php nie wie, że $paged to zmienna tylko myśli, że to kawałek tekstu.
‘cat=3&posts_per_page=3&paged=$paged’ ? w drugim loopie chce mieć wszystkie wpisy poza tym jednym jedynym, który pojawi się w pierwszym loopie….
Napisałeś:
Najpierw tak jak zrobiłeś. czyli cat=3&showposts=1 potem zaś cat=3&offset=1(by przeskoczyć ten pierwszy)&posts_per_page=10(ilość wpisów na podstronie).
To da mi takie efekt: najpierw (to co zrobiłem w 1 loopie) będę miał 1 wpis z katID 3. później będę miał (to co Ty napisałeś) 10 wpisów z katID 3 z pominięciem tego pierwszego…
A mi chodzi o to, żeby 1 loop byl tylko na stronie głównej i pokazywał ostatni wpis z katID 3, natomiast 2 loop ma pokazywać normalnie wszystkie wpisy z całego bloga (wszystkie kategorie) z pominięciem tego jednego wpisu z 1 loopa (najlepiej gdyby był pomijany tylko jeżeli miałby się dublować na stronie głównej).
ps. szkoda, że nie ma powiadomień o odpowiedzi
u mnie działa coś takiego, parametry query post sobie dobierz sam:
<!– pierwsza pętla –>
<?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query('cat=3&showposts=1'.'&paged='.$paged);
?>
<?php while ( have_posts() ) : the_post(); ?>
<?php endwhile; ?>
<?php $wp_query = null; $wp_query = $temp;?>
<!– koniec pierwszej petli –>
<!– druga pętla –>
<?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query('cat=3&showposts=1'.'&paged='.$paged);
?>
<?php while ( have_posts() ) : the_post(); ?>
<?php endwhile; ?>
<?php $wp_query = null; $wp_query = $temp;?>
<!– koniec drugiej petli –>
“ps. szkoda, że nie ma powiadomień o odpowiedzi ” – moze niedlugo sie pojawią
Dzięki palmiak, działa teraz.
Ale zauważyłem jeszcze jeden problem, gdy dam !-more– w poście, to tekst przed tym znacznikiem się nie wyświetla w ogóle.
Poradziłem sobie, wszystko gra
Super wpis, właśnie tego mi było trzeba.
Może ktoś powiedzieć jak wyświetlić same tematy postów w danej kategorii ? (i najlepiej żeby można było je jakoś posegregować, np najczęściej czytane, oraz ustalić ich liczbę)
Jest w ogóle jakiś spis funkcji php do wp ?
Spisu funkcji poszukaj na codex.wordpress.org.
Co do pierwszego to w query post dajesz która kategoria Cię interesuje oraz showposts=-1 (wyświetli wszystkie wpisy) a w loopie wyświetlasz tylko the_title() i już.
Żeby ustalić ich liczbę po prostu tworzysz sobie zmienną pomocniczą i inkrementujesz co wyświetlenie title.
Najczęściej czytane musisz rozwiąząć za pomocą wtyczek.
Bardzo pomocny post. Jestem poczatkujacym uzytkownikiem WP, jednak nie mam wielkiego pojecia o PHP, staram sie ogranac wszystko “na logike”.
Wiem juz jak wyswietlic posty z konkretnej kategorii. Moje pytanie jest nastepujace:
Jak wyswietlic jedna kategorie na jednej stronie (innej niz glowna)? I przy okazji pominac ta kategorie na str. glownej? Najlepiej jeszcze, zeby dalo sie zrobic RSS do kazdej (albo chociaz kilku) kategorii.
prosze o pomoc
pozdrawiam
[...] czyli jak ujarzmić loopa część 1. | Vivee – wordpress, webmastering, grafika i fotografia vivee.info/…ry_posts-czyli-jak-ujarzm… Pokaż reakcje /* */ inne strony z tej witryny + obserwuj co [...]
Bardzo dobry poradnik. Praktycznie bez zadnej znajomosci php udalo mi sie osiagnac taki efekt, ze posty na stronie glownej wyswietlaja sie losowo:) Wczesniej szukalem roznych pluginow na stronie WordPress ale nic nie znalazlem, a tutaj takie proste rozwiazanie zalatwilo sprawe
Dzieki
This was really a helpful post for me .Thanks a lot for sharing such a nice post in this blog. I had also bookmarked this post for my future use. Thanks a lot!portable swimming pools
The information in this blog was very interesting and it was very useful for me. I had liked the stuff very much. Thanks a lot!secure weightloss pills reviews
It is great to see the informative stuff in this blog. I had really liked it very much. Thanks a lot for the lovely site. I found it very interesting.
Wow!!! What a post it is!!! I have never been to this website ever before. Have never seen it before, thanks for the blog post guys!!!online diabetes pills journal
Once go through this site, which is very interesting and helpful. I assure you people it is one of the best site I ever had gone through that has good information about what you are looking for.overweight subjects
One of my friends suggested me about this site which she found interesting, and when I opened the site I also found it interesting and beneficial and recommended few of my family members to go through it.diet side effects news
Wow! You guys are amazing and do a good job by providing some good content in this particular website. I hope everybody will make a visit to this website and read the content as it is helpful for some extent.
.InterestingI layout on your blog. I really enjoyed reading it and also I will be back to read more in the future
>,credit repair,credit problems
This is a great blog with excellent posts and links.
Thanks for sharing.
Pętla będzie zawsze jak pętla. Wpisy są faktycznie wyświetlane na tej pętli.
I was looking around for a blog on this topic and stumbled acros your site on google… I am quite interested and I bookmarked it and will be back to check it out some more later
Hej, a w jaki sposob wyswietlic np. 3 ostatnie wpisy (dowolna cat) i strony? Tzn, by system nie rozroznial czy to post czy page – a jedynie listowal trzy najswiezsze?
I would just like to add that if you wanted to sort the entries alphabetically you have to write: order = ASC & order by = title.
I often like surfing on net and find info on new things and this time I got a new website which has great info and is quite brilliantly written. Am just thrilled and excited to see this and hope to see more work of you people in future.
webhostin reviews rated
You guys are really wonderful who search and bring such a wonderful info, I am glad to see this time also a useful stuff that had inspired me. Thanks a lot do keep giving us genuine stuff
webhosting tips guide
I enjoy reading the post and have become a great fan of yours. Keep up with the good job and please provide us with great blogs. I really appreciate the research you people take for the posts.
webhosting unlimited info
It was perfect collection of such useful information. This was a helpful post foe me. Thanks for sharing such nice information. Thanks a lot!
webhosting unlimited reviews
I was a great experience to read your post. I found your site from Google and thank a lot for this nice and wonderful information. The information posted was useful and interesting.
webhost news articles
This is such a nice and interesting blog! So much information you have shared. Thank you for posting!
Hi, There is obviously a lot to know about this. I think you made some good points.this is very useful information. I actually appreciate your own position and I will be sure to come back here.
Robert@driving lessons leeds
WordPress jest zgodny w dostarczaniu nam użytkowników z wielkim funkcji. I rzeczywiście, jak ich tematów.
Takie istotne informacje przekazał. Spędziłem więcej czasu na czytanie tego bloga porównać z innych stron blog internetowych. Zastanawiam się, czy można opublikować więcej na ten temat.
Można kontynuować na tworzeniu świetnie świetnie napisane artykuły, które specyficznie pobudza obywateli do siebie na górę oceniony. To fascynujące! To wspaniale, aby dowiedzieć się, że istnieje użytkownik, który myśli, jak również prace bardzo. Świetną robotę!
Dziękujemy! Zawsze chciałem napisać coś w moim miejscu w tym stylu. Czy mogę wziąć udział swojego posta na moim blogu? seragam
Ciekawe i właściwej stronie. Byłem tak zadowolony, że odwiedziły tę witrynę. Mam nadzieję, że będziesz udział w tym artykule pokrewnym.relocation services
But what you probably don’t know is that there is a quick way to see all WordPress options on one screen. Even those that aren’t accessible through the Options menu interface. And not only that, but you can even edit all those options at once.
Wordpress has been a great deal in my work. I prefer to use than spend my money to a low quality one.prostate cancer treatment
Wordpress jest dobrym narzędziem online .. jest ono używane przez wielu użytkowników online. Jest znany z dobrej jakości i każdy może powiedzieć, jak to jest korzystne.
Wordpress jest rzeczywiście nie tylko blogi, zgadzam się. Ale większość ludzi będzie korzystać z tego czysto w blogach, ponieważ jest to bardziej wiarygodne.Cursos ingles extranjero
Thanks for presenting those codes and for you r discussions. I can use those information in the future..-)
A jeśli bym chciał wyświetlić kilka podstron , gdzie rodzicem jest jakaś inna strona…?
I agree with your conclusions and will eagerly look forward to your incoming updates. Just saying thanks will not just be adequate, for the wonderful clarity in your writing.It is imperative that we read blog post very carefully. I am already done it and find that this post is really amazing
seragam
seragam sekolah
pria terganteng didunia
pria paling ganteng secianjur
cowok keren
puerto banus hen is very interesting and helpful………..
By means of assessing this trendy web page, I can tell whether a web page is building a good and fine topic for debate. Reading the entire article, I’m significantly pleased and happy to assert you’re one of them who make the most efficient blog pages which I've been to.bed bug bite treatment