Sortowanie wpisów w WordPress

redakcja | 12.03.2021 15:13

Zmiana kolejności publikowania wpisów na platformie WordPress może być wykonana na wiele sposobów. Niestandardowe sortowanie artykułów, nie po dacie publikacji, możemy potrzebować z wielu powodów. Przykładowo możemy chcieć, żeby wpisy układały się po dacie modyfikacji, bo bardzo często aktualizujemy stare artykuły i chcemy, aby czytelnicy ponownie na nie trafili. Możemy też chcieć ukryć na indeksach niektóre kategorie, albo wpisu z wybranymi tagami, czy nawet słowami kluczowymi w tytułach, to już bardziej filtrowanie wpisów, ale da się wykonać za pomocą tych samych koncepcji co sortowanie wpisów. 

Mężczyzna pracujący na laptopie
Mężczyzna pracujący na laptopie | envato, bernardbodo

Na początku pokażę Ci jak wykonać sortowanie wpisów za  pomocą programowania w szablonie. Poniżej polecę, dla osób będących z kodem na bakier, kilka wtyczek, które pomogą osiągnąć podobne rezultaty.

Chcąc zmienić sortowanie wszystkich indeksów naszego WordPressa najlepiej wpiąć się bocznymi drzwiami do main_query WordPressa, za pomocą akcji 'pre_get_posts' i zmodyfikować co potrzebujemy. 

WordPress ma napisany bardzo sprytny i bardzo złożony interfejs do zapytań o posty w bazie danych, gdzie możemy wpisu sortować, filtrować i wyciągać co nam się podoba, w skrajnych przypadkach zapytać o wpisy za pomocą czystego SQL, które przekazujemy za pomocą interfejsu query.

Akcja 'pre_get_posts' pozwala nam wpiąć się do miejsca, gdzie budowane jest zapytanie SQL, jeszcze przed wykonaniem requestu do bazy i zmodyfikować go według naszych potrzeb. 

Musisz pamiętac, ze pre_get_posts jest wywoływany we wszystkich zapytaniach o wpisy i jeśli chcesz posortować tylko konkretne indeksy(działy, taxonomie, tagi, widgety) to musisz użyć tagów warunkowych. Warto również wykluczyć sotrtowanie w panelu admina !is_admin(). Dzięki natywnym tagą warunkowym WordPress możlwiości logiki masz wiele. Jeżeli nie znasz jeszcze tagów warunkowych, to odsyłam Cię do podlinkowanego źródła, ale też prosto zrozuieć ich działanie na podstawie tagu is_front_page(), które sprawdza czy aktualnie otwarta jest strona głowna, tak samo is_admin(), czy aktualnie jesteśmy w panelu itd. 

Przykładowy kod sortujący wpisy w WordPress

function customPostOrderby( $query ) {if ( ( $query->is_main_query() && !is_admin() ) &&  $query->is_feed()  ) {        $query->set( 'orderby', 'post_modified' );    }}add_action( 'pre_get_posts', ‘customPostOrderby’ );

Powyższa akcja wpina się w 'pre_get_posts', sprawdza czy modifikujemy główne query, czyli is_main_query, nie pozwala na zmianę w panelu admina !is_admin() oraz wpina się tylko przy wywołaniu indeksu RSS, kótry złapiemy tagiem warunkowym  is_feed().

Cały feed RSS sortujemy na koniec według nowego sposobu, akurat tutaj przyładowo po dacie modyfikacji postu 'orderby', 'post_modified'.

Jak szybko zmienić kolejność wpisów i stron w WordPress bez programowania?

Zainstaluj wtyczkę Simple Custom Post Order

Proponowane artykuły