我想在每个有子项的“列表项”旁边添加“锚定”标记。
这是我的Walker\\u Nav\\u菜单类:
class Menu_Walker extends Walker_Nav_Menu {
function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
$ident = str_repeat( "\\t", $depth );
if ( $args->walker->has_children ) {
$classes = \'menu-item-has-children menu-item menu-item-\' . $item->ID;
// actual link
$output .= "$ident<li class=\\"$classes\\"><a href=\\"$item->url\\">$item->title</a></li>\\n";
// added tag after
$output .= "<a class=\\"added\\" href=\\"#\\">txt</a>";
} else {
$classes = \'menu-item menu-item-\' . $item->ID;
// actual link
$output .= "$ident<li class=\\"$classes\\"><a href=\\"$item->url\\">$item->title</a></li>\\n";
}
}
这是WordPress中菜单的结构:
但输出没有正确嵌套,如下图所示:
请帮我解决这个问题
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
您有这个问题,因为您的代码;)
function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
$ident = str_repeat( "\\t", $depth );
if ( $args->walker->has_children ) {
$classes = \'menu-item-has-children menu-item menu-item-\' . $item->ID;
// actual link
// you SHOULDN\'T close the li tag in here
$output .= "$ident<li class=\\"$classes\\"><a href=\\"$item->url\\">$item->title</a></li>\\n";
// added tag after
$output .= "<a class=\\"added\\" href=\\"#\\">txt</a>";
} else {
$classes = \'menu-item menu-item-\' . $item->ID;
// actual link
// you SHOULDN\'T close the li tag in here
$output .= "$ident<li class=\\"$classes\\"><a href=\\"$item->url\\">$item->title</a></li>\\n";
}
}
在您的
start_el
您关闭
li
标签,所以孩子们不能在里面打印。。。