query_posts e mostra solo risultati se un campo personalizzato non è vuoto

24 feb 2011, 11:31:40
Visualizzazioni: 20.3K
Voti: 3

Come posso utilizzare query_posts e mostrare solo i risultati se un campo personalizzato non è vuoto o ha un valore.

Voglio inserire un URL in un campo personalizzato e mostrare solo le pagine che hanno un URL?

Codice attuale ma non riesco a capire il resto:

$args = array( 
    'posts_per_page' => '10', // numero di post per pagina
    'post_type' => 'programmes', // tipo di post personalizzato
    'orderby' => 'meta_value_num', 
    'meta_key' => 'popularityfig', // chiave del campo personalizzato per l'ordinamento
    'order'  => 'DESC', // ordine decrescente
    );
0
Tutte le risposte alla domanda 3
3

Prova questo codice:

$args = array(
'posts_per_page' => '10',
'post_type' => 'programmes',
'meta_key' => 'popularityfig',
'meta_value' => '',
'meta_compare' => '!=',
'order' => 'DESC'
);

Ci sono 2 argomenti che potresti voler notare nel codice: meta_value e meta_compare. Usando meta_compare con l'operatore != verranno esclusi i post con valore meta vuoto.

24 feb 2011 11:53:51
Commenti

Grazie, ora lo vedo sul codex?? Non sono sicuro del perché non riuscissi a vederlo prima!! Grazie ancora.

erichmond erichmond
24 feb 2011 12:08:56

Per qualche motivo, continuava a recuperare tutti i miei post indipendentemente dal valore. Invece, ho usato 'meta_value' => array('') e 'meta_compare' => 'NOT IN' e ha funzionato. Ho creato il mio meta value con il plugin Advanced Custom Fields (ACF) ed era semplicemente un campo di testo.

AuRise AuRise
10 gen 2018 15:33:45

@Tessa Questo ha funzionato per me. Grazie!

sk03 sk03
25 ott 2021 22:35:14
0

Non è chiaro se la risposta sopra abbia effettivamente funzionato per te @erichmond, ma sicuramente non ha funzionato per me. Tuttavia ho trovato una soluzione. Vedi: Come mostrare i post solo se meta_value non è vuoto

2 mar 2011 21:50:40
0

La risposta accettata non funzionava per me con un campo di testo in Advanced Custom Fields. Continuava a recuperare tutti i post una volta che erano stati salvati dopo l'aggiunta del campo di testo ai Custom Fields. Ho dovuto implementare una soluzione simile ad altre:

$args = array(  
    'meta_key' => 'your_acf_field',
    'meta_value' => array(''),
    'meta_compare' => 'NOT IN',
);
13 mag 2022 17:09:25