WordPress – Afficher les messages plus récents que 30 jours

Publié par Jean-Michel le

Je deviens fou en essayant de comprendre pourquoi j’ai tant de mal à faire en sorte que WordPress n’affiche que les publications de plus de 30 jours et je pourrais vraiment utiliser une deuxième paire d’yeux. J’utilise le code suivant mais rien ne s’affiche sur mon site.

<?php
// Create a new filtering function that will add our where clause to the query
function filter_where( $where = '' ) {
// posts in the last 30 days
$where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
return $where;
}

add_filter( 'posts_where', 'filter_where' );
$the_query = new WP_Query( $query_string );
remove_filter( 'posts_where', 'filter_where' );
?>


<?php if ($the_query->have_posts()) : ?>

    <?php while ($the_query->have_posts()) : $the_query->the_post(); ?>


        <div <?php post_class() ?> id="post-<?php the_ID(); ?>">
            <h2 class="title"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
            <div class="meta">
             <span class="date">
                <strong><?php the_time('d'); ?></strong>
                <strong><?php the_time('M'); ?></strong>
             </span>


            </div>

            <div class="entry">
            <?php if ( function_exists( 'get_the_image' ) ) {
        get_the_image( array( 'custom_key' => array( 'post_thumbnail' ), 'default_size' => 'full', 'image_class' => 'alignleft', 'width' => '170', 'height' => '155' ) ); }
        ?>

                <?php the_content('Read More'); ?>
            </div>


        </div>

    <?php endwhile; ?>

    <div class="navigation">
    <?php
        include('includes/wp-pagenavi.php');
        if(function_exists('wp_pagenavi')) { wp_pagenavi(); }
    ?>
    </div>

<?php else : ?>

    <h2 class="center">Not Found</h2>
    <p class="center">Sorry, but you are looking for something that isn't here.</p>
    <?php get_search_form(); ?>

<?php endif; ?>

Solution n°1 trouvée

La façon dont vous faites semble bien. Essayez de mettre posts_per_page => -1comme argument.

Ce qui suit fonctionne pour moi:

function filter_where( $where = '' ) {
    $where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
    return $where;
}

add_filter( 'posts_where', 'filter_where' );
$args = array(
    'posts_per_page' => -1,
);
$the_query = new WP_Query($args);
remove_filter( 'posts_where', 'filter_where' );

while ($the_query->have_posts()) {
    $the_query->the_post();
    // do stuff
}

J’espère que cela aide.

Solution n°2 trouvée

<?php
  function filter_where($where = '') {
    //posts in the last 30 days
    $where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
    return $where;
  }
add_filter('posts_where', 'filter_where');
query_posts($query_string);
?>

Cela marche

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 *