¿Cómo puedo mostrar todos los valores de un campo personalizado de las publicaciones con un determinado valor de otro campo personalizado o de ciertos tipos de publicaciones?

4

Sé que la pregunta es bastante ambigua. Déjame explicarte:

Tengo una página que enumera todas las publicaciones con un cierto valor de un campo personalizado. (Por ejemplo: la página Rentals enumera todas las publicaciones con el valor rental del campo personalizado offer_type ).

Me gustaría agregar una opción de filtro por ciudad, para que solo se muestren las publicaciones con un cierto valor de city campo personalizado. Para esto creé un formulario usando el método get que construye una consulta personalizada (en mi ex. Con dos campos personalizados, 'offer_type' y 'city').

Lo que necesito es una forma de enumerar todas las ciudades (valores del campo personalizado city ) para las publicaciones con el valor rental de offer_type . Cada ciudad tiene que ser listada una vez.

Probé este fragmento de código (tenga en cuenta que tomé todo el formulario):

$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;
            }
        }

pero esto enumera todos los valores del campo personalizado city para todas las publicaciones (así que si, por ejemplo, tengo una publicación con un valor de offer_type diferente a rental , su valor del campo personalizado city aparecer en mi lista).

Sé que el problema gira en torno a las consultas de SQL y la combinación de tablas, pero realmente carezco de las habilidades para resolver este problema.

¡Por favor ayuda!

    
pregunta rereradu 08.07.2012 - 12:19

2 respuestas

1

Eche un vistazo a los documentos de referencia para la clase WP_Query: enlace

algo como esto:

$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
    
respondido por el Will the Web Mechanic 08.07.2012 - 13:38
0

esta no es una respuesta directa a su pregunta, sino una línea de código que usaría como referencia para trabajar.

Aquí hay una copia de lo que utilizo para buscar en mi tabla. Busco entre un rango de datos y luego lo limito para mostrar solo instancias de un usr_id ingresado

 $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 esto ayude :)

    
respondido por el Alexander 23.05.2015 - 01:31

Lea otras preguntas en las etiquetas