Как создать разное меню для мобильной и десктопной версии в дочерней теме twentytwelve
Я хочу использовать разные меню для мобильной и десктопной версии сайта. Под разными я имею в виду содержание, а не макет. Я просто хочу использовать мобильное меню темы twentytwelve.
Что я сделал до сих пор:
В файл functions.php моей дочерней темы я добавил следующий код:
register_nav_menus( array(
'primary' => __( 'Основная навигация', 'twentytwelve' ),
'mobile' => __( 'Мобильная навигация', 'mobile'),
) );
Теперь я могу создать два меню в панели управления. (панель управления>меню>расположение)
В файле header.php я точно не знаю, что нужно изменить, чтобы загружалось мое мобильное меню вместо основного.
<nav id="site-navigation" class="main-navigation" role="navigation">
<button class="menu-toggle"><?php _e( 'Меню', 'twentytwelve' ); ?></button>
<a class="assistive-text" href="#content" title="<?php esc_attr_e( 'Перейти к содержимому', 'twentytwelve' ); ?>"><?php _e( 'Перейти к содержимому', 'twentytwelve' ); ?></a>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'nav-menu' ) ); ?>
</nav><!-- #site-navigation -->
Я пытался изменить <?php _e( 'Меню', 'twentytwelve' ); ?>
на <?php _e( 'Меню', 'mobile' ); ?>
, но это не изменило содержимое меню на мое мобильное меню.
Я не очень хорошо знаком с этим кодом, поэтому надеюсь, кто-то сможет указать мне правильное направление.
Спасибо за помощь!

Как было рекомендовано в похожем посте: https://wordpress.stackexchange.com/a/156494/74343
1.) Создайте меню так, как вам нужно, и назовите их как угодно, например "mobile-menu" и "desktop-menu".
2.) В вашей дочерней теме в файле header.php вы можете переключать меню в зависимости от флага wp_is_mobile() следующим образом:
if ( wp_is_mobile() ) {
wp_nav_menu( array( 'menu' => 'mobile-menu' ) );
} else {
wp_nav_menu( array( 'menu' => 'desktop-menu' ) );
}
Однако я использовал плагин "WP Responsive Menu", который позволил мне выбрать меню для мобильных устройств. В настройках "WP Responsive Menu" нужно указать элемент, который НЕ следует показывать на мобильных устройствах, в случае темы twenty twelve это: "#site-navigation".
Удачного кодинга!

Если кто-то еще следит за этой веткой, я долго бился над этой проблемой, и ни одно из решений не сработало... Но я смог сделать это с помощью CSS!
По сути, создайте одно большое меню со всеми пунктами, которые вам нужны для мобильных и десктопных устройств. Затем добавьте классы: "hide-mobile" и "hide-desktop" к соответствующим пунктам меню.
Используйте этот CSS:
@media (min-width: 980px){
.hide-desktop{
display: none !important;
}
}
@media (max-width: 980px){
.hide-mobile{
display: none !important;
}
}

В дополнение к комментарию Джордана, важно знать, как добавить класс к пункту меню в WordPress:
Чтобы добавить CSS-классы к меню WordPress, сначала перейдите в раздел "Внешний вид" > "Меню" в вашей теме WordPress. Затем найдите вкладку "Настройки экрана" в правом верхнем углу экрана. Нажмите, чтобы открыть панель, и установите флажок с надписью "CSS-классы". Выберите меню, которое хотите отредактировать, и нажмите на ссылку, к которой нужно добавить CSS-класс.

Другой подход, который не требует переопределения файлов/шаблонов темы:
В файле functions.php
дочерней темы добавьте:
/**
* Регистрируем расположение меню 'mobile' в WordPress, чтобы его можно было настроить в админке.
*/
register_nav_menus( array(
'mobile' => 'Мобильное меню (заменяет основное)',
) );
/**
* При построении меню, если используется расположение 'primary' и мы на мобильном устройстве,
* заменяем его на расположение 'mobile'.
*
* @see wp_nav_menu()
*/
add_filter( 'wp_nav_menu_args', function( $args ) {
if( 'primary' === $args['theme_location'] && wp_is_mobile() ) {
$args['theme_location'] = 'mobile';
}
return $args;
} );
Затем настройте мобильное меню в разделе wp-admin
/ Внешний вид
/ Меню
.
