WordPress Header.php: Создание нескольких меню для отдельных страниц

Я пытаюсь создать несколько меню для отдельных страниц на веб-сайте WordPress. Я хотел бы, чтобы тема загружала Основное меню, если на отдельной странице не указано другое через пользовательские поля.

Попытка добавить этот код в Header.php, но при этом возникают проблемы с пользовательскими настройками тем, так как у php нет «wp_nav_menu».

<?php wp_nav_menu( array( 'container' => 'none', 'container_class' => 'menu-header', 'theme_location' => 'primary', 'menu' => get_post_meta( $post->ID, 'MenuName', true) ) ); ?>

Когда я добавляю это непосредственно в текущий код, это заставляет главное меню дублироваться поверх уже существующего пользовательского меню из темы. Вот темы существующего кода header.php:

<?php do_action( 'presscore_body_top' ); ?>

<div id="page"<?php if ( 'boxed' == of_get_option('general-layout', 'wide') ) echo ' class="boxed"'; ?>>

<?php if ( of_get_option('top_bar-show', 1) ) : ?>

<?php get_template_part( 'templates/header/top-bar', of_get_option('top_bar-content_alignment', 'side') ); ?>

<?php endif; // show top bar ?>

<?php if ( apply_filters( 'presscore_show_header', true ) ) : ?>

<?php get_template_part( 'templates/header/header', of_get_option( 'header-layout', 'left' ) ); ?>

<?php endif; // show header ?>

<?php do_action( 'presscore_before_main_container' ) ; ?>

<div id="main" <?php presscore_main_container_classes(); ?>><!-- class="sidebar-none", class="sidebar-left", class="sidebar-right" -->

<?php if ( presscore_is_content_visible() ): ?>

<div class="main-gradient"></div>

<div class="wf-wrap">
<div class="wf-container-main">

<?php do_action( 'presscore_before_content' ); ?>

<?php endif; ?>

Где в этом коде я могу создать эту опцию для отдельных страниц, чтобы вытащить для отдельного меню?

0

Решение

Не используйте menu ключ массива Вместо этого используйте theme_location ключ для вашего меню. (Вы можете исключить menu полностью.) Так что-то вроде:

wp_nav_menu( array(
'container' => false,
'theme_location' => get_post_meta( $post->ID, 'MenuName', true) ? get_post_meta( $post->ID, 'MenuName', true) : 'primary'
) );

Если пользовательского меню нет, оно вернется к «основному». Примечание: container_class бесполезно, если вы не указали контейнер, поэтому либо используйте контейнер, либо удалите container_class,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]