php 自定义步行者显示顶级项目名称

watbbzwu  于 2023-05-16  发布在  PHP
关注(0)|答案(1)|浏览(101)

我使用下面的自定义导航步行者输出自定义子菜单。我想包括家长的标题在步行者,但它只是显示空白。

class Custom_Walker_Nav_Menu extends Walker_Nav_Menu {
    
    function start_lvl( &$output, $depth = 0, $args = array() ) {
        $indent = str_repeat( "\t", $depth );
        $parent_id = $this->db_fields['id'][ $depth - 1 ];
        $parent_item = get_post( $parent_id );
        $parent_title = $parent_item->post_title;
        
        $output .= "\n$indent<p class=\"menu-title\">$parent_title</p>\n";
        $output .= "\n$indent<ul class=\"sub-menu\">\n";
    }
    
    function end_lvl( &$output, $depth = 0, $args = array() ) {
        $indent = str_repeat( "\t", $depth );
        $output .= "$indent</ul>\n";
    }
}

wp_nav_menu( array(
    'theme_location'    => 'primary',
    'menu_class'     => 'nav-menu',
    'depth'             => 2,
    'container'         => 'div',
    'container_class'   => '',
    'container_id'      => 'main-navigation',
    'walker'            => new Custom_Walker_Nav_Menup(),
) );
voj3qocg

voj3qocg1#

我决定使用jQuery在我需要的地方包含父标题。当用户将鼠标悬停在菜单项上时,我使用jQuery将文本复制到目标元素。

$(document).ready(function () {
    $('#main-navigation li.menu-item-has-children > a').hover(function () {
        // On hover, get text from source element
        var sourceText = $(this).text();
        // Replace text in target element with source text
        $('.mega-menu .header-title').text(sourceText);
    });
})

相关问题