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
Avishay
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
birgire