Wie nach Meta-Wert sortieren?

Wie kann ich nach Metawerten sortieren? Im Metawert habe ich “Preis” (float).

Ich mache diese Abfrage, bekomme aber immer

Verzeihung, keine Artikel passen auf deine Kriterien.

$posts = query_posts( $query_string . '&orderby=meta_value_num&meta_key=Notes&meta_value_num=price&order=ASC'); 

Bearbeiten:

 meta_value value: "a:6:{s:5:"width";s:3:"580";s:6:"**price**";s:3:"99"". 

Ist es möglich?

Solutions Collecting From Web of "Wie nach Meta-Wert sortieren?"

Ihr Metawert ist ein serialisiertes Array.

Was Sie für Sie bekommen wollen, sind alle Posts mit einem Meta mit dem Schlüssel 'Notes' und dem Wert 'price' . Ihr Meta-Wert ist nicht 'price' , obwohl, es ist

 a:6:{s:5:"width";s:3:"580";s:6:"price";s:3:"99" 

Das erste, was Sie tun müssen, um nach Preis zu sortieren, ist, eine hilfreiche Schlüssel / Wert-Struktur zu verwenden. Ich nehme an, dass Sie so etwas verwenden, um das Post-Meta zu speichern:

 update_post_meta( $post_id, 'foobar', array( 'width' => 580, 'price' => 99 ), true ); 

Wenn Ihre Bedürfnisse zeigen, dass Sie etwas tun müssen:

 update_post_meta( $post_id, 'width', 580, true ); update_post_meta( $post_id, 'price', 99, true ); 

Sobald Sie Ihre Meta-Werte in diesem Format gespeichert haben, werden Sie eine meta_query verwenden meta_query :

 global $query_string; parse_str( $query_string, $my_query ); $my_query['meta_query'] = array( array( 'key' => 'price', 'value' => 0, 'type' => 'SIGNED', 'compare' => '>=', ) ); $my_query['orderby'] = 'meta_value_num'; $my_query['order'] = 'ASC'; query_posts( $my_query ); 

Meta-Abfragen sind neu in WordPress 3.1, also müssen Sie mindestens diese Version verwenden, um dies zu tun.

Lassen Sie mich wissen, wenn Sie Probleme haben!

Vielleicht kann diese Lösung Ihnen helfen, ich musste die Beiträge bei jeder Anfrage nach Meta-Schlüssel und Meta-Wert sortieren, also habe ich einen Filter auf diese Weise erstellt:

 /** * Filter for every the loop request * * @param mixed $request */ function request( $request ) { $option = $_REQUEST['mysortoption'] ? $_REQUEST['mysortoption'] : 'default'; switch ( strtolower($option) ) { case 'most-viewed': $request['meta_key'] = 'most-viewed'; $request['orderby'] = "meta_value"; break; case 'hot': $request['orderby'] = 'comment_count'; break; default: break; } return $request; } add_filter('request', 'request'); 

Ok, diese Lösung ist Teil einer großen Anforderung, aber was wir hier tun, ist nur jede Anfrage abzufangen, zu überprüfen, ob es eine spezielle Sortieroption gibt, die ich vorher hinzugefügt habe, und die entsprechende Sortierung nach Meta anzuwenden.

Hoffe das hilft dir.