Usando get_posts con argumentos encontrados en meta keys
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

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
.

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 );
