Carlos Pires 0 Denunciar post Postado Maio 22, 2014 No meu site tenho uma lista com várias empresas da categoria que o usuário escolheu. Essas empresas aparecem em ordem de pacote (ouro, prata e bronze) e, dentro de cada pacote por ordem alfabética. Abaixo está o código disso que estou falando. Acontece que, gostaria que antes de se ordernar alfabeticamente, acontecesse um filtro de PESO. A custom_field peso já está implementada. Uma empresa tem o pacote ouro, porém seu nome começa com Z e ele quer aparecer nas cabeças, então o mesmo compraria peso, que são em números inteiros. Pode ser ASC ou DESC, o importante é o sistema diferenciar, dentro de cada pacote, primeiro o peso de depois a ordem alfabética. Nessa ordem: PACOTE ==> PESO ==> ALFABÉTICA $term = get_queried_object()->term_id; $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'posts_per_page' => 10, 'order' => 'ASC', 'post_type' => 'guiacomercial', 'paged' => $paged, 'tax_query' => array( array( 'taxonomy' => 'categori', 'terms' => $term, 'field' => 'term_id' ) ), 'orderby' => 'meta_value', 'meta_key' => 'plano_do_cliente', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'plano_do_cliente', 'value' => array(1, 2, 3), 'compare' => 'IN', ), array( 'key' => 'peso', ) ) ); query_posts($args); if ( have_posts() ) : while ( have_posts() ) : the_post(); No código, a key PESO ainda não faz diferença. Seguinte a imagem anexada, gostaria que o estabelecimento TESTE2 viesse primeiro que o GORDUCHOS, pois seu peso é maior. Pelo que percebi, o campo 'meta_query' não precisa estar ali. Quem manda é o 'meta_key'. Se ele estiver com 'plado_do_cliente', a ordem é pelo pacote do cliente, mas se ele estiver seta com 'peso', ele ordena por peso. Eu quero que ele seja ordenado pelos dois, primeiramente por pacote e dentro do pacote, por peso. Compartilhar este post Link para o post Compartilhar em outros sites
Carlos Pires 0 Denunciar post Postado Maio 30, 2014 Apesar de ninguém responder, abaixo segue a solução da questão: Ordernar os posts pelo valor de duas meta_key <?php $args = array( 'posts_per_page' => 10, 'post_type' => 'guiacomercial', 'paged' => $paged, 'orderby' => 'meta_value_num', 'meta_key' => 'plano_do_cliente', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'plano_do_cliente', 'value' => array(1, 2, 3), 'compare' => 'IN', ), array( 'key' => 'peso', ), ) ); add_filter( 'posts_orderby', 'filter_query' ); $query = new WP_Query( $args ); remove_filter( 'posts_orderby', 'filter_query' ); function filter_query( $q ) { global $wpdb; return " {$wpdb->postmeta}.meta_value ASC, mt2.meta_value DESC"; } while($query->have_posts()) : $query->the_post(); ?> Compartilhar este post Link para o post Compartilhar em outros sites
sNniffer 1 Denunciar post Postado Maio 31, 2014 Aproveitando, tenho um consulta e precisaria adicionar mais um clausula a esta consulta, usando o meta_key, cara como começar a usar isso? usando o valor desta nova meta_key diretamente de um campo criado por mim no banco. Vlw Compartilhar este post Link para o post Compartilhar em outros sites