我是wordpress的新手并尝试构建自制菜单结构。我找到了一个自定义助行器并根据我的需求进行了定制。菜单工作正常,现在您可以在my site上看到。
它通过<?php wp_nav_menu(array('walker' => new Custom_Nav_Walker())); ?>
加载到header.php中。该命令嵌套在ul标记内,因此walker仅在其中生成li标记。
现在我想在当前的父菜单项中添加一个名为active
的类,它是下拉列表的子项。我在网上搜了几个小时但没找到任何我能理解的东西......
_
任何人都可以帮助我将该课程应用到我的自定义助行器中吗?
提前致谢!
哈罗
class Custom_Nav_Walker extends Walker_Nav_Menu {
function start_lvl(&$output, $depth = 0, $args = array()) {
$output .= "";
}
function end_lvl(&$output, $depth = 0, $args = array()) {
$output .= "";
}
function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) {
parent::start_el($item_html, $item, $depth, $args);
if ($item->is_dropdown && ($depth === 0)) {
$output .= "";
} elseif ($depth === 0) {
$output .= "<li class=\"navbar-list-item\"><div class=\"w-dropdown\" data-ix=\"dropdown\"><div class=\"w-dropdown-toggle navbar-link\"><h5>".esc_attr($item->title)."</h5></div><nav class=\"w-dropdown-list dropdown-list\">";
} elseif ($depth > 0) {
$output .= "<a class=\"w-dropdown-link dropdown-link\" href=\"".esc_attr($item->url)."\">".esc_attr($item->title)."";
}
}
function end_el(&$output, $item, $depth=0, $args=array()) {
if ($item->is_dropdown && ($depth === 0)) {
$output .= "";
} elseif ($depth === 0) {
$output .= "</nav></div></li>";
} elseif ($depth > 0) {
$output .= "</a>";
}
}
}
答案 0 :(得分:1)
我写了一个新的自定义助行器。这一个现在有效。也许有人最终会遇到同样的问题。所以这是解决方案:
class Custom_Nav_Walker extends Walker_Nav_Menu {
function start_lvl(&$output, $depth = 0, $args = array()) {
$output .= "";
}
function end_lvl(&$output, $depth = 0, $args = array()) {
$output .= "";
}
function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) {
$class_names = $value = '';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$classes[] = 'menu-item-' . $item->ID;
$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );
parent::start_el($item_html, $item, $depth, $args);
if ($item->is_dropdown && ($depth === 0)) {
$output .= "";
} elseif ($depth === 0) {
$output .= "<li class=\"navbar-list-item\"><div class=\"w-dropdown\" data-ix=\"dropdown\"><div class=\"w-dropdown-toggle navbar-link ".esc_attr($class_names)."\"><h5>".esc_attr($item->title)."</h5></div><nav class=\"w-dropdown-list dropdown-list\">";
} elseif ($depth > 0) {
$output .= "<a class=\"w-dropdown-link dropdown-link ".esc_attr($class_names)."\" href=\"".esc_attr($item->url)."\">".esc_attr($item->title)."";
}
}
function end_el(&$output, $item, $depth=0, $args=array()) {
if ($item->is_dropdown && ($depth === 0)) {
$output .= "";
} elseif ($depth === 0) {
$output .= "</nav></div></li>";
} elseif ($depth > 0) {
$output .= "</a>";
}
}
}