WordPress Reihenfolge der Suchergebnisse ändern

Normalerweise werden alle Beiträge auf den Archivseiten chronologisch aufgelistet, also der neueste Eintrag erscheint ganz oben, der älteste ganz am Ende. Das ist aus Sicht einer Blogsoftware absolut sinnvoll, manchmal kann es aber gewünscht sein, diese Reihenfolge zu ändern.

Dafür gibt es in WordPress den Filter Hook posts_orderby. Damit lässt sich die Anzeigereihenfolge direkt beeinflussen, da hiermit die Datenbankabfrage, genauer der ORDER_BY Teil des SQL-Befehls umschreiben lässt. Wer hier mit MySQL umgehen kann, ist klar im Vorteil, hier ein Beispiel wie man es damit hinbekommt, die Suchergebnisse alphabetisch zu ordnen.

Suchergebnisse alphabetisch ordnen

Dieses Snippet sortiert die Suchergebnisse nach dem Alphabet, anhand des post_title, also des Beitragsnames.

Damit nicht alle Archivseiten, wie z.B. die Liste der Blogposts beeinflusst werden, fragen wir zuerst mit is_search() ab, ob wir uns überhaupt in einer Suchergebnisseite befinden.

Außerdem testen wir mit is_admin(), ob wir im Backend unterwegs sind, wo wir eine solche Beeinflussing der Ergebnisse vermutlich nicht haben wollen.

add_filter('posts_orderby','wpdev_sort_custom',10,2);
function wpdev_sort_custom( $orderby, $query ){
    global $wpdb;

    if(!is_admin() && is_search()) 
        $orderby =  "{$wpdb->prefix}posts.post_title ASC";

    return  $orderby;
}

Dieser Code muss in die functions.php im aktuell aktiven Theme geschrieben werden.