删除父主题的菜单项

时间:2013-09-09 作者:Chris Klongpayabal

我有一个父主题正在使用此代码创建菜单:

function cornerstone_menus() {

    register_nav_menus(
        array(
            \'header-menu-left\' => __( \'Header Menu (left)\', \'cornerstone\' ),
            \'header-menu-right\' => __( \'Header Menu (right)\', \'cornerstone\' ),
            \'footer-menu\' => __( \'Footer Menu\', \'cornerstone\' )
        )
    );

}
add_action( \'init\', \'cornerstone_menus\' );
在我的子主题中,我想要自己的菜单,所以我已经创建了它们,但这三个父主题菜单项仍然显示在“外观”>“菜单”部分。我的子主题中有一个函数可以删除菜单:

function remove_cornerstone_menus() {
    unregister_nav_menu( \'header-menu-left\' );
    unregister_nav_menu( \'header-menu-right\' );
    unregister_nav_menu( \'footer-menu\' );
}
但我不知道该采取什么行动才能让它发挥作用。我假设,由于菜单创建是在“init”操作中调用的,我可以这样做:

add_action(\'init\', \'remove_cornerstone_menus\');
但菜单仍然会显示出来。我在其他地方读到,我需要加入after\\u setup\\u主题操作,因此我尝试了以下方法:

add_action(\'after_setup_theme\', \'remove_cornerstone_menus\');
但这也没用。我不知道如何删除菜单。我可以手动删除它们,但如果主题更新,我将不得不再次执行,我正试图避免这种情况,这就是我使用子主题的原因。有人能给我指出正确的方向吗?

1 个回复
最合适的回答,由SO网友:Chris Klongpayabal 整理而成

当然,在我发布这篇文章之后,我马上找到了答案。。。所以希望其他人能从中受益。对我来说,答案是不用注销导航菜单项,我只需要删除操作。。。现在我的函数如下所示:

function remove_cornerstone_menus() {
    remove_action(\'init\', \'cornerstone_menus\');
}

add_action(\'init\', \'remove_cornerstone_menus\');
很有魅力。

结束

相关推荐