如何动态地将新菜单项添加到特定 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;
}