无法使用步行器获取菜单图案

时间:2016-09-18 作者:NehaAgra

我正在尝试,大约一个星期,以下面的模式创建菜单。。。。

<ul class="nav navbar-nav navbar-right">
<li></li>

<li class="drop"><a href="#">About<i class="fa fa-caret-down fa-lg padding-left"></i></a>

<ul class="dropdown">
   <li></li>
   <li></li>
</ul>
</li>

<li class="drop"><a href="#">My Experience<i class="fa fa-caret-down fa-lg padding-left"></i></a>

<ul class="dropdown">
   <li></li>
</ul>
现在,我的菜单是这样的。。。。

<ul id="menu-main" class="nav navbar-nav navbar-right">
  <li id="menu-item-78" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="#">Sample page</a></li>

<li id="menu-item-79" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children drop"><a href="#">Link 1</a>
  <ul>
     <li id="menu-item-80" class="menu-item menu-item-type-custom menu-item-object-custom"><a href="#">Link 2</a>
     </li>
 </ul>
</li>
</ul>
我的助行器如下。。。。。

class CSS_Menu_Walker extends Walker {

var $db_fields = array(\'parent\' => \'menu_item_parent\', \'id\' => \'db_id\');

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

function end_lvl(&$output, $depth = 0, $args = array()) {
    $indent = str_repeat("\\t", $depth);
    $output .= "$indent</ul>\\n";
}

function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) {

    global $wp_query;
    $indent = ($depth) ? str_repeat("\\t", $depth) : \'\';
    $class_names = $value = \'\';
    $classes = empty($item->classes) ? array() : (array) $item->classes;

    /* Add active class */
    if (in_array(\'current-menu-item\', $classes)) {
        $classes[] = \'active\';
        unset($classes[\'current-menu-item\']);
    }

    /* Check for children */
    $children = get_posts(array(\'post_type\' => \'nav_menu_item\', \'nopaging\' => true, \'numberposts\' => 1, \'meta_key\' => \'_menu_item_menu_item_parent\', \'meta_value\' => $item->ID));
    if (!empty($children)) {
        $classes[] = \'drop\';
    }

    $class_names = join(\' \', apply_filters(\'nav_menu_css_class\', array_filter($classes), $item, $args));
    $class_names = $class_names ? \' class="\' . esc_attr($class_names) . \'"\' : \'\';

    $id = apply_filters(\'nav_menu_item_id\', \'menu-item-\'. $item->ID, $item, $args);
    $id = $id ? \' id="\' . esc_attr($id) . \'"\' : \'\';

    $output .= $indent . \'<li\' . $id . $value . $class_names .\'>\';

    $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       ) .\'"\' : \'\';

    $item_output = $args->before;
    $item_output .= \'<a\'. $attributes .\'>\';
    $item_output .= $args->link_before . apply_filters(\'the_title\', $item->title, $item->ID) . $args->link_after;
    $item_output .= \'</a>\';
    $item_output .= $args->after;

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

function end_el(&$output, $item, $depth = 0, $args = array()) {
    $output .= "</li>\\n";
}
}
菜单打印为。。。。

<?php wp_nav_menu(array(
\'menu\' => \'Main Menu\', 
\'container\' => \'ul\',
\'container_id\' => \'\',
\'menu_class\' => \'nav navbar-nav navbar-right\',
\'walker\' => new CSS_Menu_Walker()
)); ?>

1 个回复
最合适的回答,由SO网友:NehaAgra 整理而成

完成。已用项目\\u包装

\'items_wrap\' => \'<ul class="nav navbar-nav navbar-right">%3$s</ul>\',
已更改

$output .= "\\n$indent<ul class=\\"dropdown\\">\\n";
如果(!empty($children))用于“\'>”的$item\\u输出,则使用该选项;

相关推荐

用标准的干净文件替换NAV-menus.php文件?

我是一个自学成才的wordpress网站设计师,请原谅我的无知。我为一个客户开发的几个网站最近被一个印尼黑客组织破坏了(很有趣!)。客户端没有更新wordpress安装和其他一些危及安全的事情。遗憾的是,没有网站的清理备份。网络主机给了我一个包含恶意软件扫描结果的文本文件。看起来很多受影响的文件都是导航菜单。网站的php文件。文本文件中显示的扫描结果示例如下:“[主目录]/[网站文件夹名称]/wp includes/nav-menu.php:SL-php-INJECTOR-1-ejw.UNOFFICIAL