Я пытаюсь создать несколько меню для отдельных страниц на веб-сайте 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; ?>
Где в этом коде я могу создать эту опцию для отдельных страниц, чтобы вытащить для отдельного меню?
Не используйте 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
,
Других решений пока нет …