Como ordenar por meta-valor?

Como posso classificar por meta-valor? No valor meta eu tenho “preço” (flutuador).

Eu faço essa consulta, mas sempre recebo

Desculpe, nenhum post corresponde aos seus critérios.

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

Editar:

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

É possível?

Solutions Collecting From Web of "Como ordenar por meta-valor?"

O seu valor meta é uma matriz serializada.

O que você está pedindo para obter para você é todas as postagens com um meta com a chave 'Notes' e o valor 'price' . Seu valor meta não é 'price' , porém, é

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

A primeira coisa que você precisa fazer para pedir por preço é começar a usar uma estrutura útil de chave / valor. Eu suponho que você esteja usando algo assim para armazenar o meta do post:

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

quando suas necessidades indicariam que você precisava fazer algo como isto:

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

Uma vez que você tenha seus meta valores salvos nesse formato, você vai querer usar uma 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 consultas são novas no WordPress 3.1, então você precisará usar pelo menos essa versão para fazer isso.

Deixe-me saber se você está com problemas!

Talvez essa solução possa ajudá-lo, eu precisava controlar posts classificar por meta_key e meta_value em cada pedido, então criei um filtro dessa maneira:

 /** * 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, esta solução faz parte de um grande requisito, mas o que estamos fazendo aqui é apenas interceptar cada solicitação, verifique se existe uma opção de sorting especial que eu adicionei antes e aplique o tipo correspondente por meta.

Espero que isso ajude você.