query_posts și afișarea rezultatelor doar dacă un câmp personalizat nu este gol
Cum pot folosi query_posts
pentru a afișa doar rezultatele în care un câmp personalizat nu este gol sau are o valoare.
Vreau să pun un URL într-un câmp personalizat și să afișez doar paginile care au acest URL completat?
Codul actual, dar nu reușesc să îmi dau seama de rest:
$args = array( 'posts_per_page' => '10',
'post_type' => 'programmes',
'orderby' => 'meta_value_num', 'meta_key' => 'popularityfig',
'order' => 'DESC',
);

Încearcă acest cod:
$args = array(
'posts_per_page' => '10',
'post_type' => 'programmes',
'meta_key' => 'popularityfig',
'meta_value' => '',
'meta_compare' => '!=',
'order' => 'DESC'
);
Există 2 argumente pe care ai putea să le observi în cod: meta_value
și meta_compare
. Folosind meta_compare
cu operatorul !=
vor fi excluse postările cu valoare meta goală.

Mulțumesc, acum văd asta în codex. Nu sunt sigur de ce nu am putut să văd înainte! Mulțumesc din nou.

Din anumite motive, aceasta continua să afișeze toate articolele mele indiferent de valoare. În schimb, am folosit 'meta_value' => array('') și 'meta_compare' => 'NOT IN' și a funcționat. Am creat valoarea meta cu pluginul Advanced Custom Fields (ACF) și a fost doar un câmp de text.

Nu este clar dacă răspunsul de mai sus a funcționat pentru tine @erichmond, dar cu siguranță nu a funcționat pentru mine. Am găsit totuși o soluție. Vezi: Cum pot afișa postări doar dacă meta_value nu este gol

Răspunsul acceptat nu a funcționat pentru mine cu un câmp text în Advanced Custom Fields. Continuam să obțin toate articolele odată ce erau salvate după ce câmpul text a fost adăugat la Câmpurile Personalizate. A trebuit să implementez o soluție similară cu alții:
$args = array(
'meta_key' => 'your_acf_field',
'meta_value' => array(''),
'meta_compare' => 'NOT IN',
);
