我正在从事一个将HTML代码转换为WordPress的项目。我被导航部分卡住了。
现有导航:
<nav>
<div class="dropdown">
<div class="toggle"><a href="some link">Page name</a></div>
<nav class="dropdown-list">
<a class="dropdown-link" href="some link">Page name</a>
<a class="dropdown-link" href="some link">Page name</a>
</nav>
</div>
<a class="link with out sub menus" href="some link">Page name</a>
<a class="link with out sub menus" href="some link">Page name</a>
</nav>
到目前为止,我已经能够删除wp导航和添加的默认ul和li标签
<nav>
要通过创建Walker类访问有子菜单,请执行以下操作:
class Description_Walker extends Walker_Nav_Menu
{
function start_el(&$output, $item, $depth, $args)
{
$classes = empty($item->classes) ? array () : (array) $item->classes;
$class_names = join(\' \', apply_filters( \'nav_menu_css_class\', array_filter( $classes ), $item ) );
!empty ( $class_names ) and $class_names = \' class="\'. esc_attr( $class_names ) . \'"\';
$output .= "";
$attributes = \'\';
!empty( $item->attr_title ) and $attributes .= \' title="\' . esc_attr( $item->attr_title ) .\'"\';
!empty( $item->target ) and $attributes .= \' target="\' . esc_attr( $item->target ) .\'"\';
!empty( $item->xfn ) and $attributes .= \' rel="\' . esc_attr( $item->xfn ) .\'"\';
!empty( $item->url ) and $attributes .= \' href="\' . esc_attr( $item->url ) .\'"\';
$title = apply_filters( \'the_title\', $item->title, $item->ID );
$item_output = $args->before
. "<a $attributes $class_names>"
. $args->link_before
. $title
. \'</a>\'
. $args->link_after
. $args->after;
$output .= apply_filters( \'walker_nav_menu_start_el\', $item_output, $item, $depth, $args );
}
function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\\t", $depth);
$output .= "\\n$indent<nav class=\'dropdown-list w-dropdown-list\'>\\n";
}
function end_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\\t", $depth);
$output .= "$indent</nav>\\n";
}
}
现在我只能把两者都加起来
<div>
到上面提到的有孩子的菜单。
最合适的回答,由SO网友:Bikash Waiba 整理而成
这是你的学步课
class Description_Walker extends Walker_Nav_Menu
{
function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\\t", $depth);
$output .= "\\n$indent<nav class=\'dropdown-list w-dropdown-list\'>\\n";
}
function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 )
{
$classes = empty($item->classes) ? array () : (array) $item->classes;
$class_names = join(\' \', apply_filters( \'nav_menu_css_class\', array_filter( $classes ), $item ) );
!empty ( $class_names ) and $class_names = \' class="\'. esc_attr( $class_names ) . \'"\';
$output .= "";
$attributes = \'\';
!empty( $item->attr_title ) and $attributes .= \' title="\' . esc_attr( $item->attr_title ) .\'"\';
!empty( $item->target ) and $attributes .= \' target="\' . esc_attr( $item->target ) .\'"\';
!empty( $item->xfn ) and $attributes .= \' rel="\' . esc_attr( $item->xfn ) .\'"\';
!empty( $item->url ) and $attributes .= \' href="\' . esc_attr( $item->url ) .\'"\';
$title = apply_filters( \'the_title\', $item->title, $item->ID );
$item_output = $args->before;
$wraper = ($args->walker->has_children) ? \'<div class="toggle">\':\'\';
$item_output.= $wraper
. "<a $attributes $class_names>"
. $args->link_before
. $title
. \'</a>\';
$wraper_end = ($args->walker->has_children) ? \'</div>\':\'\';
$item_output.= $wraper_end
. $args->link_after
. $args->after;
$output .= apply_filters( \'walker_nav_menu_start_el\', $item_output, $item, $depth, $args );
}
function end_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\\t", $depth);
$output .= "$indent</nav>\\n";
}
}
这是标题的代码。php我希望您已经注册了主菜单。。
wp_nav_menu( array(\'menu\' => \'Main\', \'theme_location\' => \'Primary\',\'container\' => \'\', \'items_wrap\' => \'<nav>%3$s</nav>\' , \'walker\' => new Description_Walker()));