Pre_Get_Posts Auftrag DESC Registrierung nicht

Ich habe eine Filterfunktion erstellt, um einen Beitragstyp nach seinem Metawert _item_price . Das Problem ist, dass es nur in aufsteigender Reihenfolge funktioniert und ich bin mir nicht sicher warum. Meine pre_get_posts function sieht so aus:

 function frontend_items_filter( $query ) { global $page_items_id if(!is_page($page_items_id)) return; if($query->query_vars['post_type'] == 'items' && isset($_GET['filter'])){ $sort = $_GET['item_sort']; // Set Ordering Parameter if(isset($_GET['item_sort']) && !empty($_GET['item_sort'])){ switch($_GET['item_sort']){ case 'price_lowest': $query->set('meta_key', '_item_price'); $query->set('orderby', 'meta_value_num title'); $query->set('order', 'ASC'); break; case 'price_highest': $query->set('meta_key', '_item_price'); $query->set('orderby', 'meta_value_num title'); $query->set('order', 'DESC'); break; default: $query->set('orderby', 'post_date title'); $query->set('order', 'ASC'); } } } return $query; } add_action( 'pre_get_posts', 'frontend_items_filter' ); 

Bevor ich meine Preis-Meta speichern, überprüfe ich, is_numeric() es is_numeric() . Ich habe versucht, meine Abfrage auszudrucken und das SQL direkt in PHPmyadmin auszuführen. Wenn ich das untenstehende SQL nehme und ASC in DESC ändere, ändern sich in meinem PHPmyadmin die Ergebnisse nicht, was eigentümlich ist.

 SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (10) ) AND wp_posts.post_type = 'items' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') AND (wp_postmeta.meta_key = '_item_price' ) GROUP BY wp_posts.ID ORDER BY wp_postmeta.meta_value+0,wp_posts.post_title ASC LIMIT 0, 10 

Jedes Mal zieht es meine Ergebnisse zurück in _item_price aufsteigender Reihenfolge (niedrigster Preis zu höchstem Preis). Was könnte das Problem sein? Was kann ich noch überprüfen / verifizieren?

Bearbeiten Ich habe dies mit ein paar anderen Feldern versucht, die ich habe, und es ist das gleiche Ergebnis – es wird ASC, aber nicht DESC angezeigt.

Solutions Collecting From Web of "Pre_Get_Posts Auftrag DESC Registrierung nicht"

Ich bin nicht sicher warum, aber es hatte mit dem title in meiner Bestellung zu tun, sobald ich entfernt habe, dass alles gut funktioniert. Ich lasse das offen für jeden, der weiß warum.

$query->set('orderby', 'meta_value_num title'); – functioniert nicht

$query->set('orderby', 'meta_value_num'); – functioniert!