it-swarm.com.de

Benutzerdefinierte Taxonomienavigation mit aktuellen Menüpunkten für Kinder?

Ist es möglich, eine benutzerdefinierte Taxonomienavigation mit hinzugefügten aktiven/aktuellen Menüklassen zu haben, wenn der Beitrag, für den Sie sich angemeldet haben, in dieser Kategorie/benutzerdefinierten Steuer liegt?

sie haben beispielsweise eine benutzerdefinierte Taxonomie namens ... Wetter. Darin hast du Sunny, Windy, Raining.

Wann immer Sie auf einer Sonnenseite erscheinen, sei es das Archiv der benutzerdefinierten Taxonomie oder eine single.php oder vor allem ein untergeordneter Beitrag eines Beitrags auf der Sonnenseite, wird die Sonnentaste hervorgehoben.

Ist die einzige Möglichkeit, die Kategorien manuell aufzulisten, die dann angewendet werden, wenn das Echo aktiv ist?

Ich habe versucht, ein benutzerdefiniertes Menü hinzuzufügen und es über den Administrator hinzuzufügen, aber es hatte nur den üblichen Menüpunkt, es zeigte keine Kinder oder etwas an.

Unsicher, ob dies überhaupt möglich ist.

1
user4630

Ich glaube, das Verhalten, auf das Sie hoffen, ist nicht Teil des WordPress-Kerns. Das letzte Mal, als ich das brauchte, habe ich einige Funktionen des Post Type Archive Link-Plugins angepasst, um die Hervorhebung von Post-Typen zu verbessern. Um es zu verwenden, fügen Sie einfach die Menüelemente auf die normale Weise hinzu und fügen Sie diese Funktionen in ein Plugin oder Thema ein.

// Get menus to play nicely with the submenu script
// blissfully borrowed from Post Type Archive Links plugin, thanks @stephenharris, @F J Kaiser, @ryancurban
function mrw_tax_archive_current( $items ) {
    foreach ( $items as $item ) {
        if ( 'taxonomy' !== $item->type )
            continue;

        global $post;

        if( !$post )
            continue;

        $taxonomy = $item->object;
        $taxonomy_term = $item->object_id;
        if (
            ! is_tax( $taxonomy, $taxonomy_term )
            AND ! has_term( $taxonomy_term, $taxonomy, $post->ID )
        )
            continue;

        // Make item current
        $item->current = true;
        $item->classes[] = 'current-menu-item';

        // Loop through ancestors and give them 'parent' or 'ancestor' class
        $active_anc_item_ids = mrw_get_item_ancestors( $item );
        foreach ( $items as $key => $parent_item ) {
            $classes = (array) $parent_item->classes;

            // If menu item is the parent
            if ( $parent_item->db_id == $item->menu_item_parent ) {
                $classes[] = 'current-menu-parent';
                $items[ $key ]->current_item_parent = true;
            }

            // If menu item is an ancestor
            if ( in_array( intval( $parent_item->db_id ), $active_anc_item_ids ) ) {
                $classes[] = 'current-menu-ancestor';
                $items[ $key ]->current_item_ancestor = true;
            }

            $items[ $key ]->classes = array_unique( $classes );
        }
    }

    return $items;
}
add_filter('wp_nav_menu_objects','mrw_tax_archive_current');

function mrw_get_item_ancestors( $item ) {
    $anc_id = absint( $item->db_id );

    $active_anc_item_ids = array();
    while (
        $anc_id = get_post_meta( $anc_id, '_menu_item_menu_item_parent', true )
        AND ! in_array( $anc_id, $active_anc_item_ids )
    )
        $active_anc_item_ids[] = $anc_id;

    return $active_anc_item_ids;
}
1
mrwweb