WordPress-Beiträge nach Datum sortieren
TL;DR: Wenn Sie nach einer einfachen Möglichkeit suchen, WordPress-Beiträge im Administrationsbereich nach Datum (sei es absteigend oder aufsteigend) zu sortieren, ohne dass Benutzer auf die Überschrift der Datumsspalte klicken müssen, können Sie dies mithilfe des pre_get_posts
Filters tun die einen Verweis auf die Instanz bereitstellt, die WP_Query
auf der Seite ausgeführt wird.
Codebeispiele dazu finden Sie im Rest des Artikels.
WordPress-Beiträge sortieren
Dieser Artikel ist so geschrieben, dass er davon ausgeht, dass Sie klassenbasiert eingerichtet sind. Dies bedeutet, dass die Einrichtung für den Filter in einer Funktion wie z. B. definiert ist und einen Funktionsnamen für die Klasse wie z. B. init
aufruft .public``sort_articles_by_recent_time
Schließlich definiert es eine Priorität von 10
und gibt an, dass die Funktion ein einzelnes Argument akzeptiert (das eine Instanz von WP_Query
.
Fügen Sie zunächst den folgenden Filter hinzu:
add_action( 'pre_get_posts', [ $this, 'sort_articles_by_recent_time' ], 10, 1 );
Fügen Sie dann die folgende Funktion hinzu:
So funktioniert das:
- Beachten Sie die ersten Bedingungsprüfungen, wenn wir uns nicht im Verwaltungsbereich befinden oder wenn wir uns nicht auf der
edit.php
Seite befinden (die die Post-Listing-Seite ist), verlassen wir einfach die Funktionalität. Dies ist eine Schutzklausel oder eine vorzeitige Rückgabe. - Wenn wir diese beiden Kriterien erfüllen, aktualisieren wir die Abfrage so, dass die Posts nach Datum in absteigender Reihenfolge sortiert werden. Das bedeutet, dass die aktuellsten Termine immer ganz oben aufgeführt werden.
Dies berücksichtigt nicht den Post-Status (es spielt also keine Rolle, ob es sich um einen draft
oder einen Post mit dem Status handelt). publish
Außerdem wird dadurch verhindert, dass Benutzer auf die Spaltenüberschrift „Datum” klicken müssen, um die Ergebnisse nach Bedarf zu sortieren, wenn Sie dies in Ihrer Lösung wünschen.
Verweise
[pre_get_posts](https://developer.wordpress.org/reference/hooks/pre_get_posts/)
[WP_Query](https://developer.wordpress.org/reference/classes/wp_query/)