Query per ottenere post con valore meta vuoto
Voglio interrogare i post dove il valore del meta è vuoto. Ad esempio, voglio ottenere questi tre post, senza valori meta:
Ho già provato:
$args = array(
'post_type' => 'attachment',
'posts_per_page' => 10,
'paged' => $paged,
'meta_query' => array(
array(
'key' => '_wp_attachment_image_alt', // Chiave del campo personalizzato
'value' => '', // Valore vuoto
'compare' => 'LIKE' // Operatore di confronto
)
)
);
$attachments = new WP_Query($args);
e:
$args = array(
'post_type' => 'attachment',
'posts_per_page' => 10,
'paged' => $paged,
'meta_query' => array(
array(
'key' => '_wp_attachment_image_alt', // Chiave meta
'value' => null, // Valore nullo
'compare' => 'LIKE' // Operatore
)
)
);
Ma non funziona...
Qualche idea su come risolvere?
Grazie

Penso che ti sia dimenticato dello stato del post inherit. Quello predefinito in WP_Query
è publish.
Dovresti anche usare =
invece di LIKE
, per evitare di usare LIKE '%%'
nella query SQL.
Quindi prova ad aggiungere questo:
'post_status' => 'inherit'
e
'compare' => '='
nei parametri della tua query, per corrispondere ai valori vuoti della stringa _wp_attachment_image_alt
.

Sì, ho dimenticato il post_status, e ora funziona con '='. Qual è la differenza tra '=' e 'LIKE'? Pensavo che '=' fosse per gli interi e 'LIKE' per le stringhe..Grazie

Se usi LIKE
nella meta query di WP_Query
per esempio il valore 'test'
, allora la query SQL generata conterrà LIKE '%test%'
dove %
è un carattere jolly. Quindi nel tuo caso era LIKE '%%'
, che restituisce tutti i valori. Nota che la colonna meta value è di tipo longtext
quindi qualsiasi numero lì è memorizzato come stringa. @Avishay
