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?
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();