logo logo
Aquí está el menú
WP_Query avanzado con ACF

Vamos a ver un caso común con el que me he encontrado en más de una ocasión y que me ha dado más de un quebradero de cabeza.

Nos encontramos en el caso de tener dos Custom Post Types (CPT) relacionados mediante el plugin ACF.

En nuestro ejemplo, el cpt ‘recetas’ tiene un campo donde elegir entre los distintos valores del cpt ‘ingredientes’.

ACF guardará los ingredientes como metadata con sus ids serializados.

Dado este escenario, vamos a necesitar obtener las recetas con un determinado ingrediente, por ejemplo ‘garbanzos’.

 $id_ingrediente = 123; // el id de los garbanzos
$meta_query = array();
$meta_query[] = array(
    'key'     => 'ingredientes',
    'value'   => '"' . intval( $id_ingrediente ) . '"',
    'compare' => 'LIKE'
);
$ultimas_recetas = new WP_Query( array(
    'post_type'      => 'receta',
    'suppress_filters' => true,
    'meta_query' => $meta_query
));

El truco aquí reside en usar como comparador el método LIKE, y, muy importante, añadir el entrecomillado para el id, ya que sino incluiríamos los substrings.