a couru dans ce problème dans un projet, mais jamais trouvé une solution en ligne - le mien est pas la plus jolie PHP, mais il fait le tour.
Ceci est un jeu du filtre suggéré par Katie, que j'ai rencontré dans quelques forums de support. Cela va dans votre functions.php
:
add_filter('getarchives_where', 'customarchives_where');
add_filter('getarchives_join', 'customarchives_join');
function customarchives_join($x) {
global $wpdb;
return $x . " 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)";
}
function customarchives_where($x) {
global $wpdb;
$categories = get_terms('taxonomy-name', 'orderby=id');
$includeIds;
$i = 0;
foreach($categories as $category) {
if($i != 0) $includeIds .= ',';
$includeIds .= $category->term_id;
$i++;
}
return $x . " AND $wpdb->term_taxonomy.taxonomy = 'taxonomy-name'
AND $wpdb->term_taxonomy.term_id IN ($includeIds)";
}
Dans la deuxième fonction, swap taxonomy-name
pour le nom de votre taxonomie personnalisée réelle. Tous les ID des termes de votre taxonomie personnalisée sont capturés dans une chaîne; le reste fonctionne comme la fonction d'origine - seule la liste des catégories de votre taxonomie personnalisée est incluse dans la liste wp_get_archives()
. Vous pouvez également modifier le code pour les exclure également (premier exemple ci-dessus).
Si vous souhaitez qu'une seule instance de la liste wp_get_archives()
le fasse, ignorez simplement les deux premières lignes de code de votre functions.php
qui appliquent les filtres. Ensuite, lorsque vous utilisez la balise wp_get_archives()
, appliquer les filtres avant, et les enlever ensuite:
<?php
add_filter('getarchives_where', 'customarchives_where');
add_filter('getarchives_join', 'customarchives_join');
wp_get_archives();
remove_filter('getarchives_where', 'customarchives_where');
remove_filter('getarchives_join', 'customarchives_join');
?>
L'un de ces travaux fonctionne-t-il? – markratledge