使主题自动选择默认导航菜单

时间:2013-09-03 作者:manc

我一直在开发WordPress主题。我想能够,一旦激活,看看是否已经在后端创建了菜单。如果它存在,则选择它并将其用作主菜单,否则,创建一个具有顶级页面的新菜单,并将其注册为主菜单。

我在这方面似乎找不到什么,有人能解释一下吗?

我们找到了一些检查以下列出的当前默认菜单的代码

add_action( \'after_switch_theme\',  \'mytheme_menu_fix\' );

function mytheme_menu_fix() {


    $old_theme = get_option( \'theme_switched\' );
    $old_theme_mods = get_option("theme_mods_{$old_theme}");
    $old_theme_navs = $old_theme_mods[\'nav_menu_locations\'];
    $new_theme_navs = get_theme_mod( \'nav_menu_locations\' );

    if (!$new_theme_navs) {
     $new_theme_locations = get_registered_nav_menus();

    foreach ($new_theme_locations as $location => $description ) {
         $new_theme_navs[$location] = $old_theme_navs[$location];
    }

    set_theme_mod( \'nav_menu_locations\', $new_theme_navs );

    }
}
这很好,我们现在只需要在没有选择主导航的情况下进行排序。一、 E.重新安装主题

1 个回复
SO网友:Morgan Estes

您可以使用has_nav_menu() 检查该位置是否分配了一个。如果有,请使用wp_get_nav_menu_items() 复制菜单,然后将其分配到您在主题中注册的位置。

以下是我的想法。这是我的想法,需要更多的代码和测试,但希望这对您来说是一个良好的开端:

function wpse112672_menus() {
    if( has_nav_menu( \'old_theme_menu_location\' ) {
        $old_menu = wp_get_nav_menu_items( \'old_menu_id\' );
        register_nav_menu( \'new_theme_menu_location\' );
        $new_menu = wp_nav_menu( $args );

        return $new_menu;
    } else {
        return wp_page_menu();
    }
}

结束

相关推荐

在wp-admin中修改特定页面的样式表

在这个路径中,是我的wordpress页面列表。/wp-admin/edit.php?post_type=page&orderby=title&order=asc 我想删除默认值<table> 设计网页并创建自己的风格。我如何去修改那个特定的页面。是否执行此功能add_action() 是否仍适用?仅限于特定页面?或者我应该修改edit.php 直接地