Wordpress 显示活动菜单项

Wordpress 显示活动菜单项,wordpress,drop-down-menu,menu,Wordpress,Drop Down Menu,Menu,我有个问题,不知道如何解决。 我需要显示当前活动菜单的下拉菜单。 我有以下代码: Class Description_Walker extends Walker_Nav_Menu { function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) { $id_field = $this->db_fields['id']; if ( is_ob

我有个问题,不知道如何解决。 我需要显示当前活动菜单的下拉菜单。 我有以下代码:

Class Description_Walker extends Walker_Nav_Menu {


function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {
$id_field = $this->db_fields['id'];
if ( is_object( $args[0] ) ) {
  $args[0]->has_children = ! empty( $children_elements[$element->$id_field] );
}
return parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
}

function start_lvl( &$output , $depth = 0 , $args = array() ) {
    $indent = str_repeat( "\t", $depth );
    $output .= "\n$indent<ul class=\"v-dropdown \">\n";
}



     function start_el(&$output, $item, $depth = 0, $args = array(), $current_object_id = 0)
  {
       global $wp_query;
       $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';

       $class_names = $value = '';

       $classes = empty( $item->classes ) ? array() : (array) $item->classes;

       $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) );

       $class_names = ' '. esc_attr( $class_names ) . '';


       $output .= $indent . '<li >';
       $attributes  = ! empty( $item->attr_title ) ? ' title="'  . esc_attr( $item->attr_title ) .'"' : '';
       $attributes .= ! empty( $item->target )     ? ' target="' . esc_attr( $item->target     ) .'"' : '';
       $attributes .= ! empty( $item->xfn )        ? ' rel="'    . esc_attr( $item->xfn        ) .'"' : '';
       $attributes .= ! empty( $item->url )        ? ' href="'   . esc_attr( $item->url        ) .'"' : '';
       $prepend='';

       $append = '';
       $description  = ! empty( $item->description ) ? '<span>'.esc_attr( $item->description ).'</span>' : '';


        $item_output = $args->before;

        if ( $args->has_children ) {
            $append="&nbsp;&#9662;";
                 $item_output .= '<a class="dropdown" data-hover="&nbsp">';
                 $item_output .= $args->link_before .$prepend.apply_filters( 'the_title', $item->title, $item->ID ).$append;
        $item_output .= $description.$args->link_after;
        $item_output .= '</a>';
        $item_output .= $args->after;

        } else {
                 $item_output .= '<a class="'.esc_attr( $class_names ).'" '. $attributes .' data-hover="&nbsp'.preg_replace('&nbsp;', $item->title).$append.'" >';
                 $item_output .= $args->link_before .$prepend.apply_filters( 'the_title', $item->title, $item->ID ).$append;
        $item_output .= $description.$args->link_after;
        $item_output .= '</a>';
        $item_output .= $args->after;

        }


        $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );


        }
}

网址如下:

当子菜单激活时,我需要显示ul class=v下拉列表。 请帮帮我


多谢各位

下面是我要做的

您可以将您的帐户交换为:

<header class="relative <?php if ( $post->post_parent == '47' ) { ?>show-menu<?php } ?>" >
我在本地设置了一个测试,我认为这两种方法都可能适合您。如果我需要澄清,请告诉我

编辑:我在css中添加了一个psuedo类,以针对“.v-dropdown”的第一个实例,这样只会打开第一个菜单


编辑2:我已经更新了答案,以反映帮助AnmA解决问题的正确css。

您好,您能更好地解释一下您需要什么吗?当您在其中一个页面时,是否要打开“服务”子菜单“税务/公司等”?如果是,我建议您根据wordpress结构组织这些页面,即将服务作为页面,将税务、公司等作为子页面。然后你可以使用wordpress自动添加的便捷类css标签,指示父活动页面和当前活动页面,如当前菜单项、当前页面项等。首先:对不起,我的英语不好。第二:这是我一直在寻找的,但没有正常工作,因为dropdown-v类应用于每个子菜单,就像语言的标志一样。例如:当我打开每个菜单时,父菜单都会打开。那么,如何将show menu类仅添加到当前活动的父菜单?感谢againi,我不是php专家,我也不知道该怎么做,但我可以在这部分代码中向header类添加相同的if语句吗?函数start\u lvl&$output,$depth=0,$args=array{$indent=str\u repeat\t,$depth;$output.=\n$indent\n;}此代码位于function.php中。我看到了这个问题,抱歉,我没有注意到第二个下拉列表具有相同的类名。我们只需要调整css来解决这个问题。我将编辑上面的答案以更正它。请使用它,如果它不起作用,请告诉我。非常感谢,你的建议打开了我的心扉。我不知道这个选择器,但在你回答之后,我研究了一下,找到了一个解决方案。你的答案不正确。菜单保持打开状态,但使用此代码,菜单工作正常:。show menu ul li:nth-of-type3.v-dropdown{display:block;}再次感谢。
<header class="relative <?php if ( is_page('services') || is_page('corporate-advisory') || is_page('audit-and-accounting') || is_page ('international-orientation-for-smi')) { ?>show-menu<?php } ?>" >
.show-menu ul li:nth-of-type(3) .v-dropdown {display: block; }