Interogare postări din anul curent

10 mar. 2013, 04:59:55
Vizualizări: 14.2K
Voturi: 3

Nu înțeleg de ce nu funcționează. Încerc să folosesc următoarea metodă pentru a afișa doar postările din anul curent pe pagina principală:

<?php query_posts( "&year=$current_year&order=DESC"); ?>

Totuși, tot afișează postări din 2012 (acestea nu au fost create efectiv în 2012, dar am setat data publicării pentru una dintre postările care apar la februarie anul trecut).

Conform documentației, așa ar trebui să procedez. Poate cineva să-mi explice?

Mulțumesc

2
Comentarii

Nu-i nimic, am uitat să setez variabila:

<?php $current_year = date('Y'); ?>

/Palmă la frunte

Phill Phill
10 mar. 2013 05:09:41

Iată informații despre Când ar trebui să folosești WP_Query vs query_posts() vs get_posts()? pentru oricine ar trece pe aici.

admcfajn admcfajn
10 mai 2019 01:25:55
Toate răspunsurile la întrebare 2
0

Trebuie doar să obții data curentă și să o adaugi în data_query în wp_query, Uită-te aici:

<?php 

$getdate = getdate();
$args = array(
    'date_query' => array(
        array(
            'year'  => $getdate["year"]
        ),
    ),
);
$query = new WP_Query( $args );

?>

și apoi folosește loop-ul:

<?php 

if ( $query->have_posts() ): while ( $query->have_posts() ) : $query->the_post();

the_title();
the_content();

endwhile; endif;

?>
11 mai 2014 00:50:52
0

Nu utilizați query_posts pentru a modifica interogările. Este o risipă de resurse și produce rezultate impredictibile, deoarece suprascrie interogarea originală care are loc înainte de încărcarea șablonului.

Folosiți pre_get_posts în fișierul functions.php al temei pentru a modifica interogarea înainte ca aceasta să fie trimisă la baza de date și înainte de încărcarea șablonului.

function home_page_current_year( $query ){
    if( $query->is_home() && $query->is_main_query() )
        $query->set( 'year', date('Y') );
}
add_action( 'pre_get_posts', 'home_page_current_year' );
10 mar. 2013 05:15:38