Mit dem Action Hook pre_get_posts
1 kannst du auf das $query Objekt zugreifen und die Ausgabe des Loops z.B. mit Hilfe der Order & Orderby Parameters2 entsprechend verändern.
Sollen auf der Blogseite statt den neuesten Beiträgen, die Ältesten zuerst angezeigt werden, kann folgender Codeschnipsel in die Datei functions.php im Child Theme oder in ein seitenspezifisches Plugin eingefügt werden.
function change_post_order_blog( $query ){
if ( $query->is_home() && $query->is_main_query() && !is_admin() ) {
$query->set( 'orderby', 'date' );
$query->set( 'order', 'ASC' );
}
}
add_action( 'pre_get_posts', 'change_post_order_blog' );
Möchtest du nicht nur auf der Blogseite die ältesten Beiträge anzeigen lassen, sondern auch auf den Schlagwörter- und Kategorie-Seiten, so füge noch die Bedingungen $query->is_category()
und $query->is_tag()
hinzu:
function change_post_order_cat_tag( $query ){
if ( $query->is_home() && $query->is_main_query() && ! is_admin() || $query->is_category() || $query->is_tag() ) {
$query->set( 'orderby', 'date' );
$query->set( 'order', 'ASC' );
return;
}
}
add_action( 'pre_get_posts', 'change_post_order_cat_tag' );
Zuletzt bearbeitete Beiträge zuletzt anzeigen
Sollen die Beiträge nicht nach dem Veröffentlichkeitsdatum, sondern nach dem Datum der letzten Bearbeitung sortiert werden, so ändere die Query-Abfrage von 'date'
in 'modified'
:
function change_post_order_modified( $query ){
if ( $query->is_home() && $query->is_main_query() && ! is_admin() || $query->is_category() || $query->is_tag() ) {
$query->set( 'orderby', 'modified' );
$query->set( 'order', 'ASC' );
return;
}
}
add_action( 'pre_get_posts', 'change_post_order_modified' );
Zuletzt bearbeitete Beiträge zuerst anzeigen
Und wenn du es einmal umgedreht benötigst, also die Anzeige der zuletzt bearbeiteten Beiträge auf den Blogseiten zuerst, so ändere einfach die Reihenfolge von 'ASC'
(von engl. ascending; dt. aufsteigend) in 'DESC'
(von engl. descending; dt. absteigend).
function change_post_order_modified_desc( $query ){
if ( $query->is_home() && $query->is_main_query() && ! is_admin() || $query->is_category() || $query->is_tag() ) {
$query->set( 'orderby', 'modified' );
$query->set( 'order', 'DESC' );
return;
}
}
add_action( 'pre_get_posts', 'change_post_order_modified_desc' );
Links