Interogare postări unde valoarea meta este goală

5 oct. 2016, 12:02:11
Vizualizări: 14.2K
Voturi: 5

Vreau să interoghez postările unde valoarea meta este goală. De exemplu, vreau să obțin aceste trei postări, fără valori meta: descriere imagine

Am încercat deja:

$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);

și:

$args = array(
    'post_type'   => 'attachment',
    'posts_per_page' => 10,
    'paged'          => $paged,
    'meta_query'  => array(
        array(
            'key' => '_wp_attachment_image_alt',
            'value' => null,
            'compare' => 'LIKE'
        )
    )
);

Dar nu funcționează..

Aveți vreo idee cum să rezolv această problemă?

Mulțumesc

0
Toate răspunsurile la întrebare 2
2

Cred că ai uitat de statusul de post inherit. Cel implicit în WP_Query este publish.

De asemenea, ar fi mai bine să folosești = în loc de LIKE, pentru a evita utilizarea LIKE '%%' în interogarea SQL.

Încearcă să adaugi asta:

'post_status' => 'inherit'

și

'compare' => '='

în argumentele tale de interogare, pentru a potrivi valorile goale ale șirului _wp_attachment_image_alt.

5 oct. 2016 12:17:35
Comentarii

Da, am uitat de post_status, și acum funcționează cu '='. Care este diferența dintre '=' și 'LIKE'? Credeam că '=' este pentru numere întregi și 'LIKE' pentru șiruri de caractere... Mulțumesc

Avishay Avishay
5 oct. 2016 13:00:32

Dacă folosești LIKE în interogarea meta a lui WP_Query pentru valoarea de exemplu 'test', atunci interogarea SQL generată va conține LIKE '%test%' unde % este un wildcard. Deci în cazul tău era LIKE '%%', ceea ce returnează toate valorile. Reține că coloana meta value este de tipul longtext, așa că orice numere acolo sunt stocate ca șiruri de caractere. @Avishay

birgire birgire
5 oct. 2016 13:14:25
1
-1
'meta_query' => array(
    array(
     'key' => '_wp_attachment_image_alt',
     'compare' => 'NOT EXISTS' // aceasta ar trebui să funcționeze...
    ),
)
5 oct. 2016 12:20:21
Comentarii

Nu funcționează, deoarece cheia există deja..

Avishay Avishay
5 oct. 2016 12:56:46