Как условно зарегистрировать навигационные меню с расширенными пользовательскими полями?


У меня есть тема, в которой используются расширенные настраиваемые поля, позволяющие пользователю выбирать различные параметры заголовка. Один из вариантов заголовка (где логотип находится в середине страницы между двумя меню) требует регистрации трех новых меню, одного левого меню, правого меню и мобильного меню.

Когда вы выбираете опцию заголовка, он загружает отдельный nav-left-logo-mid-nav-right.php файл, который создает HTML-код для определенного стиля заголовка.

У меня есть следующий код для создания меню:

add_action( 'after_setup_theme', 'menu_left_logo_mid_menu_right' );
function menu_left_logo_mid_menu_right() { 
    register_nav_menus( 
        array( 'left_menu'   => 'Left Menu', 
               'right_menu'  => 'Right Menu', 
               'mobile_menu' => 'Mobile Menu' )
     ); 
}

Однако я не могу заставить его работать вне functions.php . Я попытался добавить add_action в nav-left-logo-mid-nav-right.php файл, но меню не регистрировались. Что бы я ни делал, я не могу заставить код register_nav_menus() запускаться снаружи functions.php .

Я хочу, чтобы эти новые местоположения меню регистрировались только при выборе этого параметра заголовка. Однако я не могу получить доступ к Расширенным пользовательским полям в functions.php, так что я не совсем уверен, что заставь это работать.

Кто-нибудь знает, как заставить register_nav_menus() работать вне functions.php ?

Author: qotsa42, 2018-07-31

1 answers

Вы можете получить доступ к значениям ACF в functions.php, и вам придется это сделать.

Регистрация меню в файле шаблона не будет работать, потому что шаблоны загружаются после запуска after_setup_theme. Поэтому, если вы добавите какое-либо действие к этому крючку в файле шаблона, это действие не будет выполнено - они зарегистрированы с опозданием...

 1
Author: Krzysiek Dróżdż, 2018-07-31 20:36:56