我正在尝试在wordpress的菜单中的每个链接后添加顺序编号。它们应该是标签和文本。所以我可以风格。
尝试下面的这个,但由于它的CSS,我无法设置这些数字。
How to add sequential numbering for wordpress menu
我对JS一无所知。所以我在navwalker.php
中这样做了 if(! empty( $item->attr_title )){
$item_output .= '<a'. $attributes .'><i class="' . esc_attr( $item->attr_title ) . '"></i> ';
} else {
$item_output .= '<a'. $attributes .'>';
}
$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
$item_output .= ($args->has_children && $depth == 0) ? ' <span class="caret"></span></a>' : '</a>';
$item_output .= $args->after . '<span class="navnum">' . str_pad(esc_attr( $item->menu_order ), 2, "0", STR_PAD_LEFT) . '.</span>';
$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
}
}
它有效。 唯一的问题是它会计算可折叠菜单中的子项(子菜单),因此它会创建如下内容:
01
03
04
07
08
关于如何只为父母编号的任何想法?
(如果解决方案是JS,我会很感激,如果你解释它很简单)
答案 0 :(得分:0)
如果你要做的只是给顶级菜单编号,你可以只测试深度。
变化:
$item_output .= $args->after . '<span class="navnum">' . str_pad(esc_attr( $item->menu_order ), 2, "0", STR_PAD_LEFT) . '.</span>';
到:
$item_output .= $args->after . ($depth == 0 ? '<span class="navnum">' . str_pad(esc_attr( $item->menu_order ), 2, "0", STR_PAD_LEFT) : '') . '.</span>';
要按顺序编号菜单项,请在新级别开始时设置自己的全局计数器:
public function start_lvl( &$output, $depth = 0, $args = array() ) {
if (!isset($_GLOBALS['menu_counter'])) {
$GLOBALS['menu_counter'] = array();
}
$GLOBALS['menu_counter'][$depth] = 0;
$indent = str_repeat("\t", $depth);
$output .= "\n$indent<ul class=\"sub-menu\">\n";
}
然后在start_el中:
public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
global $menu_counter;
....
以及您在问题中提供的代码示例:
$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
$item_output .= ($args->has_children && $depth == 0) ? ' <span class="caret"></span></a>' : '</a>';
$item_output .= $args->after . '<span class="navnum">' . str_pad(++$menu_order[$depth], 2, "0", STR_PAD_LEFT) . '.</span>';
当你设置一个新的等级时,这样做是设置一个变量,从零开始。然后,对于该级别的每个项目,它会向该变量添加一个项目,并将结果用作菜单项目的编号。