Como recuperar posts com meta_query específica no WordPress

  • Autor Autor adruiz
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
adruiz

adruiz

Gamma
Verificación en dos pasos activada
EDIT: Solucionado 👍

Me explico, tengo un meta_query definido en todos los artículos, y desde el código me interesa recuperar de forma dinámica posts con un query específico (excepto el propio post). Para ejemplo, el siguiente código:
PHP:
$args = array(
    'post_type' => 'post',
    'post__not_in' => array($post_id),
    'meta_query' => array(
        array(
            'key' => 'coches',
            'value' => $coches
        )
    ),
);
$coches = new WP_Query($args);

Funciona correctamente cuando el valor $coches coincide en otros posts y devuelve únicamente los posts que tengan ese valor. El problema viene cuando un post tiene un meta_value que todavía es único y que ninguno otro lo tiene, en ese caso me devuelve todos los posts que existen. He probado con un compare del meta_query siguiendo la documentación de Wordpress, pero no parece funcionar, además de muchas otras opciones similares que he ido viendo en stackoverflow. Algo como esto:
PHP:
$args = array(
    'post_type' => 'post',
    'post__not_in' => array($post_id),
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key' => 'coches',
            'compare' => 'NOT EXISTS',
            'value' => ''
        ),
        array(
            'key' => 'coches',
            'value' => $coches
        )
    ),
);
$coches = new WP_Query($args);

Siempre, sin excepción, $coches -> have_posts() me devuelve true y yo lo que quiero es que me devuelva true únicamente cuando hay más posts con el mismo meta_value.

Lo único que se me ocurre es jugar de alguna manera con el post__not_in, pero no se me ocurre cómo.

¿Alguna sugerencia? Os leo 🙂
 
Última edição:
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Probaste haciendo una consulta asi?
aunque creo que es lo mismo.

PHP:
$args = array(
    'meta_key'   => 'coches',
    'meta_value' => $coches
);

$query = new WP_Query( $args );
 
PHP:
'post__not_in' => array (get_the_ID()),
 
Al final el código funcionaba correctamente, ocurre que lo estaba testeando donde no debía, en borradores 🤦‍♂️ Pero en post publicados sí parece funcionar como debe.

Gracias igualmente a los dos 👍
 
Voltar
Topo