如何动态地将新菜单项添加到特定 WordPress 菜单的开头?
How can I dynamically add a new menu item to the beginning of a specific WordPress menu?
我在我的 WordPress 主题中注册了 4 个菜单。
register_nav_menus( array(
'menu-1' => esc_html__( 'Primary', 'honeycomb' ),
'menu-2' => esc_html__( 'Mobile Cat Products', 'honeycomb' ),
'menu-3' => esc_html__( 'Top Bar', 'honeycomb' ),
'menu-4' => esc_html__( 'Shopify Nav', 'honeycomb' ),
) );
我需要在 menu-4 的 开头 处动态插入一个新菜单 link 据我所知,可以使用wp_nav_menu_items 只需传入菜单的主题位置名称即可。就我而言 'menu-4'.
add_filter( 'wp_nav_menu_menu-4_items', 'prefix_add_menu_item', 10, 2 );
function prefix_add_menu_item ( $items, $args ) {
$items .= '<li class="menu-item">My New Item Here</li>';
return $items;
}
但是这不起作用。我不确定我在这里遗漏了什么。
这里的 $menu->slug
apply_filters( "wp_nav_menu_{$menu->slug}_items", $items, $args );
不是导航菜单 ID...它是菜单名称 slug...就像这里我将我的菜单命名为 Main Menu
所以 slug变成 main-menu
所以你的过滤器会是...
add_filter( 'wp_nav_menu_main-menu_items', 'so68759013_add_menu_item', 10, 2 );
function so68759013_add_menu_item( $items, $args )
{
$items .= '<li class="menu-item">My New Item Here</li>';
return $items;
}
我在我的 WordPress 主题中注册了 4 个菜单。
register_nav_menus( array(
'menu-1' => esc_html__( 'Primary', 'honeycomb' ),
'menu-2' => esc_html__( 'Mobile Cat Products', 'honeycomb' ),
'menu-3' => esc_html__( 'Top Bar', 'honeycomb' ),
'menu-4' => esc_html__( 'Shopify Nav', 'honeycomb' ),
) );
我需要在 menu-4 的 开头 处动态插入一个新菜单 link 据我所知,可以使用wp_nav_menu_items 只需传入菜单的主题位置名称即可。就我而言 'menu-4'.
add_filter( 'wp_nav_menu_menu-4_items', 'prefix_add_menu_item', 10, 2 );
function prefix_add_menu_item ( $items, $args ) {
$items .= '<li class="menu-item">My New Item Here</li>';
return $items;
}
但是这不起作用。我不确定我在这里遗漏了什么。
这里的 $menu->slug
apply_filters( "wp_nav_menu_{$menu->slug}_items", $items, $args );
不是导航菜单 ID...它是菜单名称 slug...就像这里我将我的菜单命名为 Main Menu
所以 slug变成 main-menu
所以你的过滤器会是...
add_filter( 'wp_nav_menu_main-menu_items', 'so68759013_add_menu_item', 10, 2 );
function so68759013_add_menu_item( $items, $args )
{
$items .= '<li class="menu-item">My New Item Here</li>';
return $items;
}