Filtrare WP_Query per post con un determinato valore meta

21 dic 2010, 10:04:32
Visualizzazioni: 25.2K
Voti: 8

Come filtrare WP_Query per post che hanno un determinato valore meta, senza utilizzare una Query Select personalizzata?

Ho un custom post type con meta-key: "open" e opzioni meta-value: "yes" o "no".

Vorrei mostrare solo i post con meta_value = yes, per meta_key = "open".

function filter_where($where = '') {    

    $open = "yes";

    // $where .= " AND post_date > '" . date('Y-m-d', strtotime('-2 days')) . "'";
    return $where;
}
add_filter('posts_where', 'filter_where');
1
Commenti

Lo stai facendo in un file template? Puoi postare il codice completo del tuo file template allora? Questo è il main loop di questa pagina?

Jan Fabry Jan Fabry
28 dic 2010 12:53:28
Tutte le risposte alla domanda 2
5
14

Non sono sicuro dal tuo modo di esprimerti se non hai provato con l'argomento della query o se non ha funzionato?

$the_query = new WP_Query(array( 'meta_key' => 'open', 'meta_value' => 'yes' ));

Parametri dei campi personalizzati nel Codex.

21 dic 2010 11:19:10
Commenti

grazie per la tua rapida risposta. Ho provato a farlo, ma per qualche motivo non funziona nel mio caso. Mi restituisce un errore 404.

Henk Jan Henk Jan
21 dic 2010 11:56:15

Dove hai inserito il codice?

t31os t31os
21 dic 2010 22:34:54

L'ho inserito in un array $args dopo l'impostazione di $paged: $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; e prima di: $temp = $wp_query; $wp_query= null; $wp_query = new WP_Query($args);

Henk Jan Henk Jan
22 dic 2010 13:17:17

@Henk Jan per favore aggiungi il codice alla tua domanda, i commenti non sono adatti per questo

Rarst Rarst
22 dic 2010 13:28:22

il mio custom post type non era registrato correttamente nel database. Dopo aver risolto, la tua soluzione ha funzionato. Grazie.

Henk Jan Henk Jan
19 gen 2011 13:22:46
3
 $querystr = "
    SELECT wposts.* 
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
    WHERE wposts.ID = wpostmeta.post_id 
    AND wpostmeta.meta_key = 'custom-key' 
    AND wposts.post_type = 'page' 
    ORDER BY wpostmeta.meta_value DESC
    ";
8 ott 2012 21:31:31
Commenti

Una spiegazione ci direbbe perché questa è una risposta.

Brian Fegter Brian Fegter
8 ott 2012 22:53:10

Raddoppia quello. Inoltre: usa i metodi $wpdb quando esegui query.

kaiser kaiser
9 ott 2012 01:08:34

Vuoi assolutamente usare WP_Query invece di SQL grezzo. Perché? Cache, multisito, hai solo l'imbarazzo della scelta.

O. Jones O. Jones
13 giu 2023 18:42:12