您必须先注册菜单位置。
此外,我还添加了else
确认声明$menu_id
当菜单存在时定义。否则,您将看到PHP关于未定义变量的通知。WP_DEBUG
开发时必须打开,这就是为什么你看不到通知的原因。
// Initialize name and location
$menu_name = \'Simple Inventory Menu\';
$menu_location = \'simple-inventory-menu\';
// Register the location:
register_nav_menus(
array(
$menu_location => $menu_name,
)
);
$menu_exists = wp_get_nav_menu_object( $menu_name );
// If it doesn\'t exist, let\'s create it.
if ( ! $menu_exists ) {
$menu_id = wp_create_nav_menu( $menu_name );
// Set up default menu items
wp_update_nav_menu_item( $menu_id, 0, array(
\'menu-item-title\' => __( \'Home\', \'textdomain\' ),
\'menu-item-classes\' => \'home\',
\'menu-item-url\' => home_url( \'/\' ),
\'menu-item-status\' => \'publish\',
) );
wp_update_nav_menu_item( $menu_id, 0, array(
\'menu-item-title\' => __( \'Admin\', \'textdomain\' ),
\'menu-item-url\' => home_url( \'/index.php/admin/\' ),
\'menu-item-status\' => \'publish\',
) );
} else {
$nav_menu = get_term_by( \'slug\', $menu_location, \'nav_menu\' );
$menu_id = $nav_menu->term_id;
}
if ( ! has_nav_menu( $menu_location ) ) {
$locations = get_theme_mod( \'nav_menu_locations\' );
$locations[ $menu_location ] = $menu_id; // no PHP notice here now
set_theme_mod( \'nav_menu_locations\', $locations );
}
您可以展开代码以清理修改的
\'nav_menu_locations\'
在插件停用时。看见
register_deactivation_hook.
Complemented according the OP comment
如果您已经注册了菜单位置(取决于您使用的主题和导航菜单相关插件),并且希望菜单显示在那里,只需更改
$menu_location
值设置为现有位置(例如,“页脚导航”或“主导航”),并跳过
register_nav_menus()
步
缺点是,由于命名差异,此代码无法与任何主题一起使用。为了使代码具有通用性,必须根据成熟的需求规范重写代码。
NO! Don\'t do the exposed above!
你会有很多问题。等我找到正确的路。我也知道在哪里可以使用你所说的菜单。这就是为什么我会开发它,直到他们共同工作的解决方案。