Consultar todos los posts donde el valor meta esté vacío
Quiero consultar posts donde el valor meta esté vacío. Por ejemplo, quiero obtener estos tres posts, sin valores meta:

Ya intenté:
$args = array(
'post_type' => 'attachment',
'posts_per_page' => 10,
'paged' => $paged,
'meta_query' => array(
array(
'key' => '_wp_attachment_image_alt',
'value' => '',
'compare' => 'LIKE'
)
)
);
$attachments = new WP_Query($args);
y también:
$args = array(
'post_type' => 'attachment',
'posts_per_page' => 10,
'paged' => $paged,
'meta_query' => array(
array(
'key' => '_wp_attachment_image_alt',
'value' => null,
'compare' => 'LIKE'
)
)
);
Pero no funciona...
¿Alguna idea de cómo solucionarlo?
Gracias
Creo que olvidaste el estado de publicación inherit. El predeterminado en WP_Query es publish.
También deberías usar = en lugar de LIKE, para evitar usar LIKE '%%' en la consulta SQL.
Intenta agregar esto:
'post_status' => 'inherit'
y
'compare' => '='
en los argumentos de tu consulta, para coincidir con los valores de cadena vacía de _wp_attachment_image_alt.
Sí, me olvidé del post_status, y ahora funciona con '='. ¿Cuál es la diferencia entre '=' y 'LIKE'? Pensaba que '=' era para enteros y 'LIKE' para cadenas... Gracias.
Avishay
Si usas LIKE en la consulta meta de WP_Query para un valor como 'test', entonces la consulta SQL generada contendrá LIKE '%test%' donde % es un comodín. Así que en tu caso era LIKE '%%', lo que devuelve todos los valores. Ten en cuenta que la columna meta_value es de tipo longtext, por lo que cualquier número allí se almacena como cadena. @Avishay
birgire