WP_Query() afișează postări care se termină mai târziu decât astăzi

10 iul. 2012, 03:48:14
Vizualizări: 24.6K
Voturi: 6

Am o interogare după cum urmează:

$wp_query = new WP_Query( 
   'meta_key'     => 'end_date', 
   'meta_value'   => 'today', 
   'meta_compare' => '>=', 
   'post_type'    => 'vehicle' 
);

Vreau să afișez doar acele postări de tipul vehicle care au cheia meta end_date ce conține o dată care este mai târzie decât data de astăzi.

Cum poate fi realizat acest lucru?

0
Toate răspunsurile la întrebare 2
1
18

În primul rând, formatul datei trebuie să fie în ordine descrescătoare de la cele mai mari la cele mai mici unități, adică: an, lună, zi, oră, minut, secundă etc., altfel MySQL nu poate interoga sau ordona pe acel câmp. În acest exemplu folosesc an - lună - zi:

$today = date( 'Y-m-d' );
$args = array(
    'post_type' => 'vehicle',
    'meta_query' => array(
        array(
            'key' => 'end_date',
            'value' => $today,
            'compare' => '>=',
            'type' => 'DATE'
        )
    )
);
$query = new WP_Query( $args );
10 iul. 2012 04:31:26
Comentarii

+1 Apropo: Dacă o întrebare este suficient de bună pentru a răspunde, atunci ar trebui să fie suficient de bună și pentru a-i da un vot pozitiv. Întrebare similară și treci pe chat cândva :)

kaiser kaiser
10 iul. 2012 08:20:32
0

WordPress a adăugat interogări de dată în versiunea 3.7. Deci ai putea încerca întotdeauna:

$today = date( 'Y-m-d' );
$args = array(
    'post_type' => 'vehicle',
    'date_query' => array(
        //setează intervale de date cu șiruri de caractere!
        'after' => 'today',
        //permite returnarea potrivirilor exacte
        'inclusive'         => true,
    ),
);
$query = new WP_Query( $args );

Mai multe informații despre acest subiect găsești la https://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters

13 oct. 2015 01:18:39