计数器-内部菜单链接,例如,您可以使用nav_menu_item_title
Codex过滤器以调整菜单标题:
add_filter( \'nav_menu_item_title\', function( $title, $item, $args, $depth )
{
static $instance = 0;
// Append an increasing counter to the menu title for menu items
// within a given menu location and menu class
if( \'my-custom-location\' === $args->theme_location
&& in_array( \'my-custom-class\', (array) $item->classes )
)
$title .= sprintf( \' <span class="counter">%d</span>\', ++$instance );
return $title;
}, 10, 4 );
您应该将其调整到主题位置和菜单类。
计数器-外部菜单链接
上述方法将在链接标题中添加计数器。如果我们想在菜单链接之后添加它呢?然后我们可以使用
walker_nav_menu_start_el
Codex过滤器:
add_filter( \'walker_nav_menu_start_el\', function( $item_output, $item, $depth, $args )
{
static $instance = 0;
// Append an increasing counter to the menu link for menu items
// within a given menu location and menu class
if( \'my-custom-location\' === $args->theme_location
&& in_array( \'my-custom-class\', (array) $item->classes )
)
$item_output .= sprintf( \' <span class="counter">%d</span>\', ++$instance );
return $item_output;
}, 10, 4 );
内联文档上的注释我注意到
inline documentation 对于
nav_menu_item_title
表示
$args
是一个数组,但它似乎是
stdClass
对象所以这有点令人困惑!
如果我们退房Walker::display_element()
然后我们看到$args
输入参数实际上是一个数组,它与输出、元素和深度的数组合并为:
$cb_args = array_merge( array(&$output, $element, $depth), $args);
call_user_func_array(array($this, \'start_el\'), $cb_args);
但是在这里
$cb_args
是一个数组,其中第四个元素是
stdClass
对象(不是数组),这是
Walker_Nav_Menu::start_el()
方法
这个inline documentation 对于Walker_Nav_Menu::start_el()
还表示它的第三个输入参数是一个数组。当它是一个物体时。
我将考虑为此创建一个trac票证。
更新
如果计数器是注释数,则可以使用
count
属性下面是一个示例:
$counter = get_comments(
[
\'count\' => true,
\'post_author\' => $current_user->ID,
\'status\' => \'approve\',
// ... etc
]
);
您可能还想检查用户是否已登录,以避免为其他访问者运行此查询。