Как условно зарегистрировать навигационные меню с расширенными пользовательскими полями?
У меня есть тема, в которой используются расширенные настраиваемые поля, позволяющие пользователю выбирать различные параметры заголовка. Один из вариантов заголовка (где логотип находится в середине страницы между двумя меню) требует регистрации трех новых меню, одного левого меню, правого меню и мобильного меню.
Когда вы выбираете опцию заголовка, он загружает отдельный 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 ?
1 answers
Вы можете получить доступ к значениям ACF в functions.php
, и вам придется это сделать.
Регистрация меню в файле шаблона не будет работать, потому что шаблоны загружаются после запуска after_setup_theme
. Поэтому, если вы добавите какое-либо действие к этому крючку в файле шаблона, это действие не будет выполнено - они зарегистрированы с опозданием...