WordPress: losowa kolejność postów
Jak losowo wyświetlać posty? Nic prostszego, wystarczy jedna linijka kodu (tu rozbite, żeby dobrze się wyświetlało:
add_filter( 'posts_orderby', create_function( '$a', 'return "rand()";' ) );
Szukaj
Tagi
404
aktualizacja
auto referrer
bezpieczeństwo
blip
blipgo
cms
css
feed
google
grajan
html
internet explorer
ip.board
javascript
jquery
klient
konfiguracja
linux
mysql
nginx
odnośnik
optymalizacja
perl
php
plugin
poradnik webmastera
portfolio
postgresql
RSS
seo
smarty
spam
testowanie
upgrade
usability
utf8
webdesign
webox
WordCamp
WordPress
wordpress szablon
wpml
wtyczka
xhtml
ostatnie komentarze
- Radek o WordPress: blokowanie w robots.txt kilku rzeczy
- Marcin o Wtyczka WordPress ” upPrev
- Eva (My Client is Rich) o Wtyczka WordPress ” upPrev
- Marcin o WordPress: losowa kolejność postów
- Michał o WordPress: losowa kolejność postów
- Marcin o WordPress: losowa kolejność postów
- Michał o WordPress: losowa kolejność postów
- Marcin o WordPress: blokowanie w robots.txt kilku rzeczy
- SpeX o WordPress: blokowanie w robots.txt kilku rzeczy
- Thanks God it’s Friday | Studio Multimedi@lne ljasinski.pl o WordPress: blokowanie w robots.txt kilku rzeczy
ostatnio popularne wpisy
- Jak używać w odnośnikach użyć mailto
- WordPress na wiele języków
- Tworzenie layoutu ” krok po kroku
- Ostatnia wersja WPML na licencji GPL
- Wyświetlanie jednej kategorii wpisów na stronie głównej
- WordPress: Jak ustawić strony z wpisami?
- WordPress: blokowanie w robots.txt kilku rzeczy
- Interaktywna mapa Polski ” wtyczka do WordPressa
- WPML stał się komercyjną wtyczką
- WordPress: jak zmodyfikować atrybuty ikony wpisu?

Liczba komentarzy: 7
17 stycznia 2012 o godzinie 15:19 Sebastian skomentował:
A jak to wygląda w przypadku paginacji?
Bo wydaje mi się, że przy przechodzeniu na kolejną stronę walidacji podaje kolejne, wylosowane posty, bez zawężania wyników o wyświetlone już wpisy.
Ale nie jestem w 100% pewien, bo moje testy trwały ułamek sekundy ;)
17 stycznia 2012 o godzinie 15:23 Sebastian skomentował:
Po krótkich testach już się upewniłem, że jest tak, jak przed chwilą napisałem.
Ktoś ma jakiś pomysł na uwzględnienie tego?
17 stycznia 2012 o godzinie 16:59 Marcin skomentował:
Trzeba dodać warunki, is_paged, is_single i nie losować wtedy. Tutaj losuje zawsze, nie sprawdzając.
31 stycznia 2012 o godzinie 9:30 Michał skomentował:
A po co filtry do tego. Przecież to jest zaimplementowane w argumentach funkcji get_posts().
Wystarczy dodać do tej funkcji argument:
‘orderby’ => ‘rand’
Nie trzeba się bawić w warunki, globalne filtry. Włączamy losowanie tam gdzie potrzebujemy.
31 stycznia 2012 o godzinie 11:27 Marcin skomentował:
@Michał: prawie masz rację. Prawie, ponieważ funkcji get_posts używa się poza the loop. Przeciętny motyw nigdy nie używa tej funkcji, raczej używa „while ( have_posts() )”, do którego nie wepniesz się z „orderby”.
31 stycznia 2012 o godzinie 11:58 Michał skomentował:
@Marcinie oczywiście, że masz rację. Ale ..
to samo ‘orderby’=>’rand’ jest dostępne ogólnie w WP_Query co powoduje, że można go użyć praktycznie wszędzie gdzie występuje zapytanie do bazy danych o posty w tym query_posts() czy wspomniane get_posts itd.
Musisz pamiętać, że globalne dodanie proponowanego przez Ciebie filtru wszędzie w całym temacie będzie powodowało wyświetlanie losowych postów (niezależnie od paginacji jak zauważył @Sebastian). Trzeba stosować różne warunki aby to ujarzmić. Zastosowanie tego prostego kodu w typowym temacie zasadniczo rozłoży funkcjonalność tematu na łopatki.
Więc nadal łatwiej dodać 2 linijki kodu z funkcją
global $wp_query;
$args = array_merge( $wp_query->query, array( ‘orderby’ => ‘rand’ ) );
query_posts( $args );
przed konkretną pętlą, czy wykorzystać ten argument gdzieś w temacie z funkcją get_posts.
31 stycznia 2012 o godzinie 12:42 Marcin skomentował:
@Michał: to co podałem we wpisie, to przepis JAK zrobić losowanie, a nie GDZIE je stosować.
Dodaj komentarz
Należy wpełnić pola oznaczone znakiem gwiazdki "*". Proszę zapoznać się z zasadami komentowania.