2014-12-24 3 views
0

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

Попытка добавления этого кода в 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

Моя проблема здесь в понимании, где разместить этот код в существующем header.php. Когда я помещаю его в код, он вызывает загрузку второго меню поверх существующего. Как получить текущий код для регистрации этой функции без загрузки дублирующего меню? Спасибо, что нашли время, чтобы помочь. –

Смежные вопросы