J'utilise wp_list_categories
pour afficher tous les termes de ma taxonomie personnalisée 'categories'.
La fonction affiche tous mes termes avec succès, mais la catégorie actuelle n'est pas mise en surbrillance, même si 'current_category'
est défini sur 1
dans mes arguments.
La fonction est générée sur taxonomy-categories.php
, conformément à la convention de nommage de ma taxonomie categories
.
Ce n'est pas dans une boucle, pourrait-il en être ainsi?
UPDATE, voici ma fonction:
$args = array(
'orderby' => 'term_group',
'title_li' => NULL,
'order' => 'ASC',
'hide_empty' => 1,
'use_desc_for_title' => 0,
'feed' => '',
'hierarchical' => 1,
'echo' => 1,
'current_category' => 1,
'taxonomy' => 'categories'
);
echo wp_list_categories($args);
Remarque: cela fonctionne sur mon modèle single-{post-type}.php
, mais ne fonctionne pas sur mon modèle taxonomy-{taxonomy}.php
.
Cela ajoutera une classe current-cat
à toutes/toutes les catégories connectées à la publication, pas une seule.
Ajoutez ceci à functions.php
function tax_cat_active( $output, $args ) {
if(is_single()){
global $post;
$terms = get_the_terms( $post->ID, $args['taxonomy'] );
foreach( $terms as $term )
if ( preg_match( '#cat-item-' . $term ->term_id . '#', $output ) )
$output = str_replace('cat-item-'.$term ->term_id, 'cat-item-'.$term ->term_id . ' current-cat', $output);
}
return $output;
}
add_filter( 'wp_list_categories', 'tax_cat_active', 10, 2 );
La réponse fournie par Howdy_McGee a généré pour moi un avis PHP qui l'empêchait de fonctionner correctement. J'ai changé $terms = get_the_terms( $post->ID, $args['taxonomy'] );
en $terms = get_the_terms( $post->ID, 'taxonomy' );
. J'ai également ajouté une vérification indiquant que la publication comporte des termes associés pour supprimer des avertissements supplémentaires PHP si $terms
est vide.
function tax_cat_active($output, $args) {
if (is_single()) {
global $post;
$terms = get_the_terms($post->ID, 'category');
if (!empty($terms)) {
foreach( $terms as $term )
if ( preg_match( '#cat-item-' . $term ->term_id . '#', $output ) )
$output = str_replace('cat-item-'.$term ->term_id, 'cat-item-'.$term ->term_id . ' current-cat', $output);
}
}
return $output;
}
add_filter('wp_list_categories', 'tax_cat_active', 10, 2);