Как сделать на сайте wp 2 меню?

Ссылка скопирована
0 ответов

Сайт сверстан и поставлен на wp. Тема чистая, генерировал на https://underscores.me/
Появилась необходимость сделать 2 разных меню (на русском и на английском)
Второе меню зарегистрировал, но вывести его в шапке для теста даже не получается.

1. В исходном файле functions.php был код:

// This theme uses wp_nav_menu() in one location. 	register_nav_menus( 		array( 			'menu-1' => esc_html__( 'Primary', 'copini' ), 		) 	);

// This theme uses wp_nav_menu() in one location. register_nav_menus( array( 'menu-1' => esc_html__( 'Primary', 'copini' ), ) );

2. Меню зарегистрировано, поэтому я просто строчку добавляю:

// This theme uses wp_nav_menu() in one location. 	register_nav_menus( 		array( 			'menu-1' => esc_html__( 'Primary', 'copini' ), 			'menu-2' => esc_html__( 'Secondary', 'copini' ), 		) 	);

// This theme uses wp_nav_menu() in one location. register_nav_menus( array( 'menu-1' => esc_html__( 'Primary', 'copini' ), 'menu-2' => esc_html__( 'Secondary', 'copini' ), ) );

3. Далее хочу вывести в header.php:

<?php 				wp_nav_menu( 					array( 						'theme_location' => 'menu-2', 						'menu_id'        => 'primary-menu', 					) 				); 				?>

<?php wp_nav_menu( array( 'theme_location' => 'menu-2', 'menu_id' => 'primary-menu', ) ); ?>

4. В админке меню закрепил за нужными областями:

Как сделать на сайте wp 2 меню?

Но меню второе не выводится. Выводится оно только, когда я в админке в область Primary выберу menu-2.
Почему же не выводится сразу menu-2?

Дополнительно:

Как сделать на сайте wp 2 меню?

Код рабочий, вопрос неактуальный
<?php
wp_nav_menu(
array(
'theme_location' => 'menu-2',
'menu_id' => 'primary-menu',
)
);
?>

Ответы:

У тебя указан menu_id..

Что сделать:
В админке во вкладке "Управление областями" оставить поле "Назначенное меню" пустым.
Там в редакторе меню выбрать в какой позиции выводить это меню. (Область отображения)
Убрать menu_id.

Ниже пример для 99% случаев:

register_nav_menus([     'top' =&gt; 'Верхнее', ]); wp_nav_menu([     'theme_location' =&gt; 'top',     'container'=&gt; false,     'menu_class' =&gt; 'nav ',     'menu_id' =&gt; '',     'fallback_cb' =&gt; false    ]);

register_nav_menus([ 'top' =&gt; 'Верхнее', ]); wp_nav_menu([ 'theme_location' =&gt; 'top', 'container'=&gt; false, 'menu_class' =&gt; 'nav ', 'menu_id' =&gt; '', 'fallback_cb' =&gt; false ]);

Нужно понимать что выводится не меню а его позиция, через админку указывается связь, позиции и меню. в wp_nav_menu() можно указать какое именно надо, в документации описан приоритет.

А это решение для остального процента:

## Добавление стилей для стандартного меню add_filter('nav_menu_css_class', 'add_menu_list_item_class', 1, 3); function add_menu_list_item_class($classes, $item, $args) {     if (property_exists($args, 'li_class') &amp;&amp; !$item-&gt;menu_item_parent) {         $classes[] = $args-&gt;li_class;     }     if (property_exists($args, 'li_child_class') &amp;&amp; $item-&gt;menu_item_parent) {         $classes[] = $args-&gt;li_child_class;     }     return $classes; }  add_filter( 'nav_menu_link_attributes', 'add_menu_link_class', 1, 3 ); function add_menu_link_class( $atts, $item, $args ) {     if ( strpos( $atts['href'], home_url() ) === false ) {         $atts['target'] = '_blank';     }     if (property_exists($args, 'a_class') &amp;&amp; !$item-&gt;menu_item_parent) {         $atts['class'] = $args-&gt;a_class;     }     if (property_exists($args, 'a_child_class') &amp;&amp; $item-&gt;menu_item_parent) {         $atts['class'] = $args-&gt;a_child_class;     }     return $atts; } add_filter( 'nav_menu_submenu_css_class', 'my_nav_menu_submenu_css_class', 1, 3); function my_nav_menu_submenu_css_class($classes, $args, $depth) {     if (property_exists($args, 'ul_child_class')) {         $classes[] = $args-&gt;ul_child_class;     }     return $classes; } wp_nav_menu([     'theme_location' =&gt; 'bottom',     'container'=&gt; false,     'menu_class' =&gt; '',     'menu_id' =&gt; '',     'fallback_cb' =&gt; false,     'a_class' =&gt; '',     'a_child_class' =&gt; '',     'li_class' =&gt; '',     'li_child_class' =&gt; '',     'ul_child_class' =&gt; '', ]);

## Добавление стилей для стандартного меню add_filter('nav_menu_css_class', 'add_menu_list_item_class', 1, 3); function add_menu_list_item_class($classes, $item, $args) { if (property_exists($args, 'li_class') &amp;&amp; !$item-&gt;menu_item_parent) { $classes[] = $args-&gt;li_class; } if (property_exists($args, 'li_child_class') &amp;&amp; $item-&gt;menu_item_parent) { $classes[] = $args-&gt;li_child_class; } return $classes; } add_filter( 'nav_menu_link_attributes', 'add_menu_link_class', 1, 3 ); function add_menu_link_class( $atts, $item, $args ) { if ( strpos( $atts['href'], home_url() ) === false ) { $atts['target'] = '_blank'; } if (property_exists($args, 'a_class') &amp;&amp; !$item-&gt;menu_item_parent) { $atts['class'] = $args-&gt;a_class; } if (property_exists($args, 'a_child_class') &amp;&amp; $item-&gt;menu_item_parent) { $atts['class'] = $args-&gt;a_child_class; } return $atts; } add_filter( 'nav_menu_submenu_css_class', 'my_nav_menu_submenu_css_class', 1, 3); function my_nav_menu_submenu_css_class($classes, $args, $depth) { if (property_exists($args, 'ul_child_class')) { $classes[] = $args-&gt;ul_child_class; } return $classes; } wp_nav_menu([ 'theme_location' =&gt; 'bottom', 'container'=&gt; false, 'menu_class' =&gt; '', 'menu_id' =&gt; '', 'fallback_cb' =&gt; false, 'a_class' =&gt; '', 'a_child_class' =&gt; '', 'li_class' =&gt; '', 'li_child_class' =&gt; '', 'ul_child_class' =&gt; '', ]);

  • pLavrenov спасибо большое за желание помочь! Это очень ценная информация. Вопрос снят, код рабочий, на хостинге были технические неполадки((( а я голову сломал((
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно