Ordenar mensagens por múltiplos valores meta

1) Tipo de postagem personalizado chamado “Buying_Locations”

2) Cada Post tem três meta valores de: Estado, Cidade, Nome da loja

PERGUNTA: Como você pode mostrar uma lista dessas postagens ordenadas alfabeticamente por Estado, depois Cidade e, em seguida, o Nome da Loja? Por exemplo…

ESTADO 1

  • CIDADE 1

    • NOME DA LOJA
    • NOME DA LOJA
    • NOME DA LOJA
  • CIDADE 2

    • NOME DA LOJA
    • NOME DA LOJA
    • NOME DA LOJA
  • CIDADE 3

    • NOME DA LOJA
    • NOME DA LOJA
    • NOME DA LOJA

ESTADO 2

  • CIDADE 1

    • NOME DA LOJA
    • NOME DA LOJA
    • NOME DA LOJA
  • CIDADE 2

    • NOME DA LOJA
    • NOME DA LOJA
    • NOME DA LOJA

ESTADO 3

  • CIDADE 1

    • NOME DA LOJA
    • NOME DA LOJA
  • CIDADE 2

    • NOME DA LOJA
    • NOME DA LOJA
    • NOME DA LOJA
  • CIDADE 3

    • NOME DA LOJA

Eu consegui um pouco mais com isso:

$mypost = array( 'post_type' => 'buy_locations', 'posts_per_page' => -1, 'meta_key' => 'store_city', 'orderby' => 'meta_value title', 'order' => 'ASC' ); $loop = new WP_Query( $mypost ); 

Basta descobrir como ordenar primeiro o Estado, depois a cidade, depois o título.

Não tem certeza de como adicionar o valor “meta_key” extra.

Como faço para adicionar o 3º pedido de sorting?

 $mypost = array( 'post_type' => 'buy_locations', 'posts_per_page' => -1, 'meta_key1' => 'store_state', 'meta_key2' => 'store_city', 'orderby' => 'meta_value1 meta_value2 title', 'order' => 'ASC' ); 

Solutions Collecting From Web of "Ordenar mensagens por múltiplos valores meta"

Como não consegui encontrar o caminho para pegar o título da postagem personalizada e adicioná-lo à sorting / ordenação por meta_key, editei meu tipo de postagem personalizado para include um campo oculto que pegue o título da postagem e o configure como um meta personalizado valor quando o usuário adiciona uma nova postagem personalizada. Então, no meu plugin de tipo de postagem personalizado, eu tenho:

  if ( isset( $_POST['buy_location_name'] ) && $_POST['buy_location_name'] != '' ) { update_post_meta( $buy_location_id, 'location_name', get_the_title($buy_location_id) ); } 

E, em seguida, na página da frente que publica os resultados ordenados por Estado, Cidade e finalmente Nome da loja, uso o código de exemplo encontrado neste URL: http://wordpress.mcdspot.com/2012/10/24/sort-posts- on-multiple-custom-fields /

Meu código começa assim …

 $meta_keys = array('store_state','store_city','location_name'); $args = array( 'post_type' => 'buy_locations', 'meta_key' => $meta_keys[0], 'orderby' => 'meta_value', 'posts_per_page' => -1); $my_query = new WP_Query($args); 

E, mais tarde, termina com …

 usort($my_query->posts, 'sort_3_keys'); while ( $my_query->have_posts() ) : $my_query->the_post(); $id = $post->ID; $storestate = $id_array[$id][$meta_keys[0]]; $storecity = $id_array[$id][$meta_keys[1]]; $storename = $id_array[$id][$meta_keys[2]]; echo "$storestate | $storecity | $storename 
"; endwhile;

Em resumo, o gato que desenvolveu esse código ( http://wordpress.mcdspot.com/2012/10/24/sort-posts-on-multiple-custom-fields/ ), é um malvado e eu sou grato por seu trabalho e para ele compartilhá-lo. Isso me ajudou a alcançar os resultados que eu precisava. Felicidades.

Não verifiquei isso, mas um rápido olhar para o Codex diz que sua consulta deve include apenas 'Orderby' => 'state city name'