Filtrează WP_Query pentru articole cu o anumită valoare meta

21 dec. 2010, 10:04:32
Vizualizări: 25.2K
Voturi: 8

Cum să filtrezi WP_Query pentru articole cu o anumită valoare meta, fără a folosi o interogare SQL personalizată?

Am un tip de articol personalizat cu meta_key: "open" și opțiuni pentru meta_value: "yes" sau "no".

Aș dori să afișez doar articolele cu meta_value = yes, pentru meta_key = "open".

function filter_where($where = '') {    

    $open = "yes";

    //$where .= " AND post_date > '" . date('Y-m-d', strtotime('-2 days')) . "'"; 
    // Adaugă AND post_date mai mare decât data de acum 2 zile
    return $where;
}
add_filter('posts_where', 'filter_where');
1
Comentarii

Faci asta într-un fișier de template? Poți posta întregul cod al fișierului tău de template? Este acesta bucla principală a acestei pagini?

Jan Fabry Jan Fabry
28 dec. 2010 12:53:28
Toate răspunsurile la întrebare 2
5
14

Nu sunt sigur din formularea ta dacă nu ai încercat cu argumentul de interogare sau nu a funcționat?

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

Parametrii Câmpului Personalizat în Codex.

21 dec. 2010 11:19:10
Comentarii

mulțumesc pentru răspunsul rapid. Am încercat asta, dar din nu știu ce motiv nu funcționează pentru mine. Îmi aruncă o eroare 404.

Henk Jan Henk Jan
21 dec. 2010 11:56:15

Unde ai plasat codul?

t31os t31os
21 dec. 2010 22:34:54

L-am pus într-un array $args după setarea mea pentru $paged: $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; și înainte de: $temp = $wp_query; $wp_query= null; $wp_query = new WP_Query($args);

Henk Jan Henk Jan
22 dec. 2010 13:17:17

@Henk Jan te rog să adaugi cod la întrebarea ta, comentariile nu sunt potrivite pentru asta

Rarst Rarst
22 dec. 2010 13:28:22

tipul meu personalizat de postare nu a fost înregistrat corect în baza de date. După ce am rezolvat asta, soluția ta a funcționat. Mulțumesc.

Henk Jan Henk Jan
19 ian. 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 oct. 2012 21:31:31
Comentarii

O explicație ne-ar spune de ce acesta este un răspuns.

Brian Fegter Brian Fegter
8 oct. 2012 22:53:10

Dublu asta. De asemenea: Folosește metodele $wpdb când faci interogări.

kaiser kaiser
9 oct. 2012 01:08:34

Cu siguranță vrei să folosești WP_Query și nu SQL brut. De ce? Cache-uri, multisite, ai înțeles ideea.

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