Sortieren Sie WordPress Archive nach mehreren Oderby-Argumenten in der pre_get_posts-Aktion

Eigentlich funktioniert diese private function in meiner function.php, ABER: Ich erhalte beim ersten Laden oft Fehler 500 vom Server, oft wird NACH dem Neuladen der Seite gerendert.

## change the sorting order on archive pages: order archive by title add_action( 'pre_get_posts', 'gpsp_change_sort_order'); function gpsp_change_sort_order($query) { if(is_archive() && $query->is_main_query()) : $query->set( 'meta_query', array( 'relation' => 'OR', array( 'key' => 'ausgabe', 'value' => '', 'compare' => 'EXISTS', 'type' => 'NUMERIC' ), array( 'key' => 'position', 'value' => '', 'compare' => 'EXISTS', 'type' => 'NUMERIC' ) )); $query->set( 'orderby', 'meta_value position' ); $query->set( 'meta_key', 'ausgabe' ); $query->set( 'order', 'ASC' ); endif; }; 

Ist jemand Experte genug, um mir diesen Fehler zu erklären?

Solutions Collecting From Web of "Sortieren Sie WordPress Archive nach mehreren Oderby-Argumenten in der pre_get_posts-Aktion"

Ich bin kein Experte, aber Sie haben hier ein paar Probleme

Erstens sollte is_archive() ein Objekt von $query . Sie sollten auch das Frontend mit Ihrer function anvisieren. Denken pre_get_posts daran, pre_get_posts ändert alle Instanzen von WP_Query , Frontend und Backend.

Also diese Linie

 if(is_archive() && $query->is_main_query()) : 

sollte in etwa so aussehen

 if( !is_admin() && $query->is_archive() && $query->is_main_query()) : 

Ich kann Ihre Logik mit Ihrer meta_query und Ihrer Bestellung nicht herausfinden. Ich bin mir wirklich nicht sicher, ob deine Bestellung wirklich funktionieren wird. Sie sollten sich das genau ansehen, wenn Sie einen Schlüssel angeben und nach einem anderen sortieren

Ein anderes mögliches Problem, das ich hier sehen kann, ist, verwenden Sie die OR Beziehung in Ihrer meta_query . Sie meta_key Post ab, die einen meta_key oder den anderen meta_key . Was passiert, wenn es keine Beiträge gibt, die den einen oder anderen meta_key Wie beeinflusst dies Ihre Bestellung und welche Fehler werden ausgetriggers? Ehrlich gesagt, habe ich solche Szenarien noch nicht getestet, also könnte das ein Angriff auf nichts sein, aber immer noch nützlich, um es im Hinterkopf zu behalten

Möglicherweise müssen Sie an einer Überprüfung arbeiten, um sicherzustellen, dass ein Schlüssel vorhanden ist, bevor Sie versuchen, damit zu orderby .