Interogare postări din anul curent
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

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;
?>

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' );
