2014-12-24 127 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中放置此代碼的位置。當我將它放在代碼中時,它會導致第二個菜單加載到現有的頂部。如何在不加載重複菜單的情況下獲取當前代碼以註冊此功能? 感謝您抽出時間幫助。 –

相關問題