web-dev-qa-db-fra.com

Affiche tous les mois avec les articles et chaque mois affiche les 5 derniers articles.

Je dois afficher tous les mois pour lesquels des publications sont actives et chaque mois, au moins 5 publications liées à chaque mois.

<h6>May</h6>
<ul>
    <li><a href="#">Souvlaki ignitus carborundum</a></li>
    <li><a href="#">Defacto lingo est igpay atinlay</a></li>
    <li><a href="#">Quote meon an estimate</a></li>
    <li><a href="#">Souvlaki ignitus carborundum</a></li>
    <li><a href="#">Defacto lingo est igpay atinlay</a></li>
    <li><a href="#">Quote meon an estimate</a></li>
</ul>
<h6>April:</h6>
<ul>
    <li><a href="#">Sic tempus fugit esperanto hiccup</a></li>
    <li><a href="#">Epsum factorial non deposit</a></li>
</ul>

Je ne sais pas comment je peux m'y prendre ou quelle fonction utiliser. Toute aide/direction serait appréciée.

1
user990717

une possibilité consiste à exécuter toutes les publications dans la boucle et à ne sortir le mois qu'une fois par mois:

<?php       
$counter = 0;
$ref_month = '';
$monthly = new WP_Query(array('posts_per_page' => -1));
if( $monthly->have_posts() ) : while( $monthly->have_posts() ) : $monthly->the_post();

    if( get_the_date('mY') != $ref_month ) { 
        if( $ref_month ) echo "\n".'</ul>';
        echo "\n".'<h6>'.get_the_date('F').'</h6>';
        echo "\n".'<ul>';
        $ref_month = get_the_date('mY');
        $counter = 0;
    }

if( $counter++ < 5 ) echo "\n".'   <li><a href='.get_permalink($post->ID).'>'.get_the_title($post->ID).'</a></li>';

endwhile; 
echo "\n".'</ul>';
endif; 
?>
3
Michael

Voici une version plus lisible de la solution fournie par Michael

<?php       
$posts = new WP_Query(array('posts_per_page' => -1));
if ($posts->have_posts()): ?>
<ul id="archives">
    <?php 
    $prev_month = '';
    while ($posts->have_posts()): $posts->the_post();
    if (get_the_date('F Y') != $prev_month): 
        $prev_month = get_the_date('F Y'); ?>
    <li class="month"><?= $prev_month; ?></li>
    <?php endif; ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endwhile; ?>
</ul>
<?php endif; ?>
1
Ali Haris