Como posso exibir todos os valores de um campo personalizado de postagens com um determinado valor de outro campo personalizado ou de determinados tipos de postagens?

4

Eu sei que a questão é bastante ambígua. Deixe-me explicar:

Eu tenho uma página que lista todas as postagens com um determinado valor de um campo personalizado. (Por exemplo: a página Rentals lista todas as postagens com o valor rental do campo personalizado offer_type ).

Gostaria de adicionar uma opção de filtragem por cidade, para que apenas as postagens com um determinado valor do campo personalizado city sejam exibidas. Para isso, criei um formulário usando o método get que cria uma consulta personalizada (no meu ex. Com dois campos personalizados, 'offer_type' e 'city').

O que eu preciso é uma forma de listar todas as cidades (valores de city campo personalizado) para as postagens com o valor rental de offer_type . Cada cidade tem que ser listada uma vez.

Eu tentei esse código (note que tirei todo o formulário):

$metakey = 'city';
   $cities = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT meta_value 
           FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $metakey) );

   if ($cities) {   
                 foreach ( $cities as $city ) {
                 echo $city;
            }
        }

mas isso lista todos os valores do campo personalizado city de todas as postagens (assim, se, por exemplo, eu tiver uma postagem com valor offer_type diferente de rental , seu valor de city campo personalizado ser exibido na minha lista).

Eu sei que o problema gira em torno de consultas sql e de ingressar em tabelas, mas realmente não tenho as habilidades para resolver esse problema.

Por favor, ajude!

    
por rereradu 08.07.2012 / 12:19

2 respostas

1

Dê uma olhada nos documentos de referência para a classe WP_Query: enlace

algo como isto:

$args = array(
  //some key/value pairs...whatever
          'meta_query => array(
                          array(
                         'key' => somekey,
                         'value' => somevalue,
                         'compare' => some comparison operator
                         ),
                         array(
                         'key' => some other key,
                         'value' => some other value,
                         'compare' => some comparison operator
                         )
                     )
               )

$my_query = new WP_Query( $args );

//some code to do something with the results of the query
    
por Will the Web Mechanic 08.07.2012 / 13:38
0

esta não é uma resposta direta à sua pergunta, mas uma linha de código que você usaria como referência para trabalhar.

aqui está uma cópia do que eu uso para pesquisar na minha tabela, Eu pesquiso entre um intervalo de dados e, em seguida, limite-o para exibir apenas instâncias de um usr_id

inserido
 $this->items = $wpdb->get_results($wpdb->prepare("SELECT  *  FROM $table_name WHERE 'datec' BETWEEN CAST('$start_date' AS DATE) AND CAST('$end_date' AS DATE) AND 'usr_id'= $usr_id"), ARRAY_A);

espero que isso ajude:)

    
por Alexander 23.05.2015 / 01:31