Usando get_posts con argumentos encontrados en meta keys

13 oct 2011, 14:48:42
Vistas: 38.3K
Votos: 8

Estoy usando get_posts, pero necesito refinar la consulta basándome en posts donde cierta meta_key tenga un valor específico.

Algo como esto

<?php $reviews = get_posts('post_type=reviews&numberposts=-1&   // por ejemplo // location=berkshire');

¿Es posible hacer esto y si es así, cómo?

Maravilloso

0
Todas las respuestas a la pregunta 2
0
19

get_posts acepta cualquiera de los argumentos que WP_Query acepta. Así que hay varias opciones.

1. meta_key y meta_value

<?php
get_posts(array(
   // algunos argumentos más aquí
   'meta_key'   => 'some_key',
   'meta_value' => 'some value'
));

2. meta_query

meta_query es más sofisticado que usar meta_key y meta_value. Por ejemplo, digamos que quieres obtener posts que tengan el meta_key con uno de tres valores:

<?php
get_posts(array(
   // más argumentos aquí        
   'meta_query' => array(
      // meta_query toma un array de arrays, ¡ten cuidado con esto!
      array(
         'key'     => 'some_key',
         'value'   => array('anOption', 'anotherOption', 'thirdOption'),
         'compare' => 'IN'
      )
   )
));

Hay un montón de ejemplos que puedes revisar en la sección de campos personalizados de la documentación de WP_Query.

8 jul 2012 07:47:08
0

Sí. Es posible. Usa los parámetros meta_key y meta_value. meta_key es para la clave del campo personalizado (por ejemplo, ubicación) y meta_value es para el valor del campo personalizado (por ejemplo, berkshire).

Usa el siguiente código refinado:

/* Argumentos de la consulta. */
$args = array(
    'post_type' => 'reviews',
    'posts_per_page' => -1,
    'meta_key' => 'location', 
    'meta_value' => 'berkshire'
);

/* Obtener reseñas */
$reviews = get_posts( $args );
13 oct 2011 16:31:14