WordPress : Modifier la requête wp en fonction de la sélection de l’année

Publié par Jean-Michel le

Introduction

J’ai un blog sur lequel je montre le dernier message des 365 derniers jours et je ne montre que 100 messages. J’ai également la possibilité pour l’utilisateur de sélectionner l’année (c’est ce sur quoi je travaille actuellement).

Question

Comment puis-je l’avoir ainsi lorsqu’un utilisateur choisit une année différente (dans la sélection), la requête est définie pour afficher les publications de cette année et supprimer la limite de 100 publications et montrer qu’il s’agit de ma page de blog.

Ma requête

<?php
// gets info
$current_category = get_queried_object('post');
//$current_user =get_the_author_posts();

// the query
$wpb_all_query = new WP_Query(array(
    'post_type' => 'post',
    'post_status' => 'publish',
    'cat' => $current_category->term_id,
//    'author' =>  $current_user,
//    'tag' => '',
    'posts_per_page' => 100,
    'date_query' => array(
        array(
//            'year'  => '2019',
            'after' => '-365 days',
            'column' => 'post_date',
        )
    )
));

Ma sélection (année)

 <select style="top: -4px;"
                class=" btn-link col-12"
                name="archive-dropdown"
                onChange='document.location.href=this.options[this.selectedIndex].value;'>
            <?php wp_get_archives('type=yearly&format=option'); ?>
        </select>

Ma page de blog

<?php
require "settings.php";
if ($wpb_all_query->have_posts())
    :while ($wpb_all_query->have_posts())
    :$wpb_all_query->the_post();
    ?>
content
<?php endwhile; ?>
<?php endif; ?>

J’essayais une instruction dans la requête mais je ne voyais pas comment sélectionner l’année, mais si je définissais l’année sur une variable en fonction de l’option, c’est peut-être mieux>?

Solution n°1 trouvée

Cela vous donnera tous les messages (pas de limite à 100), pour l’année 1999. Changez $yearToLookForpour l’année dont vous avez besoin.

<?php
//here is from a $_GET parameter
$yearToLookFor = $_GET['year'];

 // gets info
 $current_category = get_queried_object('post');
//$current_user =get_the_author_posts();

// the query
$wpb_all_query = new WP_Query(array(
    'post_type' => 'post',
    'post_status' => 'publish',
    'cat' => $current_category->term_id,
//    'author' =>  $current_user,
//    'tag' => '',
    'date_query' => array(
        array(
            'year'  => $yearToLookFor,

        )
    )
));

Dans cet exemple, l’année a été extraite d’une requête d’URL, comme ceci : https://votrewebiste.zyx/?année=1999

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *