web-dev-qa-db-fra.com

wp_get_archives pour une catégorie spécifique?

J'ai tiré mes cheveux sur celui-ci - j'ai besoin de coder en dur dans wp_get_archives() pour une catégorie spécifique dans un modèle.

Ce post était utile:

Catégorie Archives spécifiques

mais, comme avec tous les plugins que j'ai trouvés jusqu'à présent, ils ne fonctionnent pas avec WP 3.1 (ou vous devez pirater les fichiers de base que je ne veux évidemment pas faire).

Y a-t-il une autre solution dont je ne suis pas au courant? Peut-être une méthode en créant une boucle séparée?

Merci pour tous les pointeurs

osu

3
Osu

Je l'ai fait d'une manière relativement compliquée en utilisant une requête personnalisée. Je ne connaissais pas Smart Archives Reloaded, j'ai donc écrit le code moi-même. Mais ça marche. Remplacez votre identifiant de catégorie pour "term_taxonomy.term_id"

<?php
                     global $wpdb, $wp_locale;
                    $query = "select YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts from $wpdb->posts,  $wpdb->term_taxonomy, $wpdb->term_relationships 
                        WHERE $wpdb->posts.post_status = 'publish' 
                        AND $wpdb->posts.post_type = 'post'
                        AND $wpdb->term_taxonomy.term_id = 11
                        AND $wpdb->posts.ID = $wpdb->term_relationships.object_id
                        AND $wpdb->term_taxonomy.term_taxonomy_id = $wpdb->term_relationships.term_taxonomy_id
                     GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC"; 
                     $arcresults = $wpdb->get_results($query); 
                    foreach ($arcresults as $arcresult): 
                    $text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($arcresult->month), $arcresult->year);?>
                    <li><a href="<?php bloginfo('url') ?>/[your_category_base]/[your_category_name]/date/<?php echo $arcresult->year; ?>/<?php echo str_pad($arcresult->month, 2, '0', STR_PAD_LEFT); ?>"><?php echo $text;  ?> </li>
                      <?php endforeach; ?> 

En écrivant cela, j'ai été aidé en regardant http://core.trac.wordpress.org/browser/tags/3.2.1/wp-includes/general-template.php où wp_get_archives est défini.

Et utilisé le code trouvé ici (mis dans functions.php): http://snipplr.com/view.php?codeview&id=17432 pour créer des liens permanents pour les archives pour une catégorie sous la forme de http://example.com/category_base/category_name/date/YYYY/MM

2
danielwiener

Jetez un coup d'œil au plug-in Scribu Smart Archives Reloaded qui vous permet d'afficher une liste des publications groupées par année et par mois.

Et limiter les archives par catégorie est aussi simple que cela:

smart_archives( '', 'category_name=category_name' ); 
1
Bainternet

Peut-être utilisez query_posts pour générer votre requête, puis utilisez une boucle personnalisée.

http://codex.wordpress.org/Function_Reference/query_posts

0
matpol