Отменить регистрацию навигационного меню из дочерней темы


Мне нравится использовать тему Старкеров и создавать дочернюю тему.

Итак, я хотел бы удалить это основное меню

Старкеры (functions.php)

function starkers_setup() {
// This theme uses wp_nav_menu() in one location.
register_nav_menus( array(
'primary' => __( 'Primary Navigation', 'starkers' ),
) );


}
endif;

Мой ребенок-тема functions.php выглядит примерно так:

unregister_nav_menu( array(
'primary' => __( 'Primary Navigation', 'starkers' ),
));

// my new nav
register_nav_menus(array(
'primary_navigation' => __('Main', 'starkers'),
'utility_navigation' => __('Meta', 'starkers')
));

Но это не работает для меня.

Что случилось?
Спасибо

Author: ogni, 2012-04-22

3 answers

Настройка темы Starkers подключена к after_setup_theme с приоритетом 10. Таким образом, вам в основном нужно обернуть функцию отмены регистрации внутри другой функции (дочерние темы functions.php файл) и добавьте его позже , чем функция настройки родительских тем, поэтому он сначала добавляется родителем, а затем удаляется дочерним.

function wpse_remove_parent_theme_locations()
{
    // @link http://codex.wordpress.org/Function_Reference/unregister_nav_menu
    unregister_nav_menu( 'primary' );
}
add_action( 'after_setup_theme', 'wpse_remove_parent_theme_locations', 20 );
 11
Author: kaiser, 2012-04-22 17:04:59

Это определенно должно сработать для вас, я только что проверил

add_action( 'after_setup_theme', 'remove_default_menu', 11 );
function remove_default_menu(){
unregister_nav_menu('primary');
}
 1
Author: IFightCode, 2012-04-22 17:06:59

Другие решения для меня не сработали.

Это сработало:

function remove_parent_theme_locations()
{
    unregister_nav_menu( 'primary' );
}
add_action( 'init', 'remove_parent_theme_locations', 20 );
 0
Author: Aleksandar M, 2020-11-21 21:06:43