web-dev-qa-db-fra.com

Archive par année

Après quelques recherches, je n'ai pas trouvé de réponse à ce que j'essaie d'archiver.

J'essaie de mettre en place une page d'archive avec des panneaux d'accordéon qui masquent/affichent les messages d'une année donnée avec des liens.

Alors, comment puis-je afficher une année entière de messages, pas seulement un lien vers une année?

Exemple:

2012

Titre de l'article

Titre du post suivant

Un autre titre de poste

==============

2011

Titre de l'article

Titre du post suivant

Un autre titre de poste

Etc

3
Chris

Le Simple Yearly Archive Plugin fait justement cela.

Ce code fera également l'affaire:

<?php
// get years that have posts
$years = $wpdb->get_results( "SELECT YEAR(post_date) AS year FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY year DESC" );

foreach ( $years as $year ) {
    // get posts for each year
    $posts_this_year = $wpdb->get_results( "SELECT post_title FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' AND YEAR(post_date) = '" . $year->year . "'" );

    echo '<h2>' . $year->year . '</h2><ul>';
    foreach ( $posts_this_year as $post ) {
        echo '<li>' . $post->post_title . '</li>';
    }
    echo '</ul>';
}
?>  

Il y a peut-être lieu d'optimiser cela, mais j'ai testé et cela fonctionne.

3
Ryan

Je pense qu'il y a probablement plus d'une façon de le faire, mais si vous ne savez pas déjà comment ajuster la requête avant de faire la boucle, vous devrez probablement la lire, car je ne vois pas comment vous pourriez le faire. faites-le sans jouer avec ça. Ici est un bon point de départ.

et si vous avez besoin de réinitialiser la requête

0
byronyasgur