wp_list_categories () – current-cat-class auch in Posts?

Ich habe meine eigene function geschrieben, um alle Taxonomiebegriffe einer bestimmten Taxonomie aufzulisten …

function wr_list_taxonomy($taxonomy, $orderby, $hierarchical) { $show_count = 0; $pad_counts = 0; $title = ''; $args = array( 'taxonomy' => $taxonomy, 'orderby' => $orderby, 'show_count' => $show_count, 'pad_counts' => $pad_counts, 'hierarchical' => $hierarchical, 'title_li' => $title ); return wp_list_categories( $args ); } 

Diese function funktioniert genau wie wp_list_categories() und gibt auch eine “current-cat” -class aus, sobald ich auf einer Term-Seite bin.

Stellen Sie sich meine URL-Struktur vor …

 www.mysite.com/term //current-cat works perfect www.mysite.com/term/a-post-associated-with-this-term //current-cat not assigned 

Gibt es eine Chance, die “current-cat” -class auch dann zu arbeiten, wenn ich in einem Post bin, aber innerhalb dieser “Kategorie”, wie oben erwähnt?

aktualisieren:

Die function wr_list_taxonomy() wird in meiner Datei header.php .

  

Ich habe die wr_list_taxonomy() -function auf Ihre Version aktualisiert.

Außerdem habe ich eine andere function, die für das, was ich möchte, relevant sein könnte …

 /** * Add category-slug as classname to wp_list_categories() */ add_filter('wp_list_categories', 'add_slug_css_list_categories', 10, 2); function add_slug_css_list_categories($list, $args) { if ( $args["taxonomy"] == "event_type" ) { $cats = get_terms('event_type'); $class = 'term term-'; } else { $cats = get_categories(); $class = 'category-'; } foreach( $cats as $cat ) { $find = 'cat-item-' . $cat->term_id . '"'; $replace = $class . $cat->slug . '"'; $list = str_replace( $find, $replace, $list ); $find = 'cat-item-' . $cat->term_id . ' '; $replace = $class . $cat->slug . ' '; $list = str_replace( $find, $replace, $list ); } return $list; } 

Diese function fügt jedem

  • wr_list_taxonomy() in der function wr_list_taxonomy() den “category-slug” hinzu. Das funktioniert gut.

    Ich muss nur die “current-cat” -class anwenden, wenn ich auf einer single.php (post) -Site bin, die der “aktuellen Kategorie” zugeordnet ist, in der ich mich befinde.

    Solutions Collecting From Web of "wp_list_categories () – current-cat-class auch in Posts?"

    Ja natürlich. Sie müssen nur den Begriff ID und legen Sie es auf die Argumente. Überprüfen Sie wp_list_categories()

     function wr_list_taxonomy($taxonomy, $orderby, $hierarchical, $cat_id) { $show_count = 0; $pad_counts = 0; $title = ''; $cat_id = 0; $args = array( 'taxonomy' => $taxonomy, 'orderby' => $orderby, 'show_count' => $show_count, 'pad_counts' => $pad_counts, 'hierarchical' => $hierarchical, 'title_li' => $title, 'current_category' => $cat_id ); return wp_list_categories( $args ); } 

    Sie müssen die Kategorie-ID oder die Begriffs-ID übergeben. Damit es funktioniert.

    Wie erhalten Sie eine Kategorie-ID?

    Beispielsweise:

      global $post; $taxonomy = 'my-tax'; $term_id = 0; if(is_singular('post')){ // post type is optional. $terms = wp_get_post_terms( $post->ID, $taxonomy, array("fields" => "ids") ); if(!empty($terms)) $term_id = $terms[0]; //we need only one term id } wr_list_taxonomy($taxonomy, $orderby, $hierarchical, $term_id); 

    Es ist nur ein einfaches Beispiel und es gibt andere Möglichkeiten, es zu tun. Es hängt davon ab, wo Sie den Code verwenden.