wp_list_categories
を使用して、カスタム分類のすべての用語を表示しています'categories'.
関数はすべての用語を正常に出力していますが、引数で'current_category'
が1
に設定されていても、現在のカテゴリは強調表示されていません。
関数は、私の分類法categories
の命名規則に従って、taxonomy-categories.php
に出力されています。
それはループ内ではありません、それが理由でしょうか?
更新、ここに私の機能があります:
$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);
注:これはsingle-{post-type}.php
テンプレートで機能しますが、taxonomy-{taxonomy}.php
テンプレートでは機能しません。
これにより、投稿に関連するすべてのカテゴリにcurrent-cat
クラスが追加されます。
これを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 );
Howdy_McGeeからの回答で、私にはPHPという通知が表示され、正しく機能しませんでした。 $terms = get_the_terms( $post->ID, $args['taxonomy'] );
を$terms = get_the_terms( $post->ID, 'taxonomy' );
に変更しました$terms
が空の場合、追加のPHP警告を抑制するために、投稿に関連する用語があることの確認も追加しました。
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);