Je ne comprends pas vraiment pourquoi ça ne marche pas. J'essaie d'utiliser ce qui suit pour afficher uniquement les publications de l'année en cours sur la page d'accueil:
<?php query_posts( "&year=$current_year&order=DESC"); ?>
Pourtant, les messages de 2012 sont toujours affichés (ils n’ont pas été publiés en 2012, mais j’ai fixé la date de publication à l’un des messages affichés en février de l’année dernière).
Selon la documentation, c'est comme ça que je devrais le faire. Quelqu'un peut-il nous éclairer?
Merci
Vous devez juste obtenir la date actuelle et l'ajouter à data_query dans wp_query, regardez ceci:
<?php
$getdate = getdate();
$args = array(
'date_query' => array(
array(
'year' => $getdate["year"]
),
),
);
$query = new WP_Query( $args );
?>
puis utilisez la boucle:
<?php
if ( $query->have_posts() ): while ( $query->have_posts() ) : $query->the_post();
the_title();
the_content();
endwhile; endif;
?>
N'utilisez pas query_posts
pour modifier vos requêtes. C'est un gaspillage de ressources qui produit des résultats imprévisibles, car il écrase la requête d'origine, ce qui se produit avant le chargement du modèle.
Utilisez pre_get_posts
dans le functions.php
de votre thème à la place pour modifier la requête avant elle est envoyée à la base de données et avant que le modèle ne soit chargé.
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' );