web-dev-qa-db-fra.com

Liste des mois spécifiques à la catégorie dans sidebar.php

Ce qui m’a poussé à me séparer des cheveux pendant un certain temps, comment sortir une liste de mois spécifique à une catégorie. Je cherchais le même problème et la solution ne trouve aucun porte-bonheur jusqu'ici ...

Quoi qu'il en soit, j'ai deux POST pages de type sur mon site Web. L'une est la page NEWS (ex. http://example.com/news/) et l'autre est la page BLOG (ex. http://example.com/blog/).

J'utilise archive.php pour afficher ma page NEWS et BLOG et l'endroit où je veux afficher la liste des mois avec le nombre de publications dans sidebar.php. Je pourrais produire des listes à l’aide de wp_get_archives('cat=0'), mais cette sortie est comme celle-ci.

2013/05(20)
2013/06(12)
2013/07(18)
2013/08(6)

HTML:

<li><a href="http://xxxxxxxx.com/wp/2013/05/"></a></li>
<li><a href="http://xxxxxxxx.com/wp/2013/06/"></a></li>
<li><a href="http://xxxxxxxx.com/wp/2013/07/"></a></li>
<li><a href="http://xxxxxxxx.com/wp/2013/08/"></a></li>

Lorsque je clique sur l'un de ces éléments, cela m'amène à la page où se trouvent tous les messages publiés au cours de ce mois spécifique, bien entendu.

Ce que j'aimerais afficher si je suis dans la page NEWS, par exemple, est:

HTML:

<li><a href="http://xxxxxxxx.com/wp/news/2013/05/"></a></li>
<li><a href="http://xxxxxxxx.com/wp/news/2013/06/"></a></li>
<li><a href="http://xxxxxxxx.com/wp/news/2013/07/"></a></li>
<li><a href="http://xxxxxxxx.com/wp/news/2013/08/"></a></li>

Catégorie spécifique. Une idée?

3
norixxx

vous pouvez utiliser le filtre getarchives_where pour obtenir les archives par catégorie

add_filter( 'getarchives_where', 'my_archives_filter_function', 10, 2 );

// your filter function replace YOUR CATEGORY ID with category term id e.g(3)
function my_archives_filter_function($where) {
   global $wpdb;
   $where ." AND $wpdb->posts.ID IN (SELECT $wpdb->posts.ID FROM $wpdb->posts INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_taxonomy.term_id = 'YOUR CATEGORY ID')";
   return $where;
}

maintenant, appelez wp_get_archives();

1
Anjum