Sortuj posty WordPress według daty
TL; DR: Jeśli szukasz łatwego sposobu sortowania postów WordPress według daty (malejąco lub rosnąco) w obszarze administracyjnym bez konieczności klikania przez użytkowników nagłówka kolumny Data, możesz to zrobić za pomocą pre_get_posts
filtra który zawiera odwołanie do instancji WP_Query
działającej na stronie.
Aby zapoznać się z przykładami w kodzie, jak to zrobić, sprawdź resztę artykułu.
Sortuj posty WordPress
Ten artykuł jest napisany w taki sposób, że zakłada twoją konfigurację w oparciu o klasę. Oznacza to, że konfiguracja filtra jest zdefiniowana w funkcji takiej jak init
i wywołuje public
nazwę funkcji w klasie, taką jak sort_articles_by_recent_time
.
Na koniec definiuje priorytet 10
i określa, że funkcja będzie akceptować pojedyncze argumenty (co jest instancją WP_Query
.
Najpierw dodaj następujący filtr:
add_action( 'pre_get_posts', [ $this, 'sort_articles_by_recent_time' ], 10, 1 );
Następnie dodaj następującą funkcję:
Oto jak to działa:
- Zwróć uwagę na pierwsze warunkowe sprawdzenia, jeśli nie jesteśmy w obszarze administracyjnym lub jeśli nie ma nas na
edit.php
stronie (która jest stroną z listą postów), po prostu opuszczamy funkcjonalność. To jest klauzula ochronna lub wczesny powrót. - Jeśli spełnimy oba te kryteria, zaktualizujemy zapytanie tak, aby wysyłało posty według daty w porządku malejącym. Oznacza to, że najnowsze daty będą zawsze wyświetlane na górze.
Nie uwzględnia to statusu posta (więc jeśli jest to draft
post lub post ze publish
statusem, nie ma to znaczenia). Ponadto uniemożliwi to użytkownikom klikanie nagłówka kolumny Data w celu posortowania wyników w razie potrzeby, jeśli jest to coś, czego pragniesz w swoim rozwiązaniu.
Bibliografia
[pre_get_posts](https://developer.wordpress.org/reference/hooks/pre_get_posts/)
[WP_Query](https://developer.wordpress.org/reference/classes/wp_query/)