2011-07-22 24 views
0

因此,這是基本的模板頁面代碼:如何在模板中加載不同的子菜單(子菜單取決於頁面)?

<?php 

/* 
* Template name: About Content Template 
*/ 
?> 
<?php get_header(); the_post(); ?> 

<div id="container"> 
     <div id="main-content" class="dropShadow roundEdge"> 
      <?php wp_nav_menu(array('menu' => 'About Submenu', 'menu_id' => 'submenu', 'container' => 'false')); ?> 
      <?php the_content(); ?> 
     </div> 
     <?php get_sidebar();?> 
</div> 
<?php get_footer();?> 

爲了簡單起見,讓我們說,唯一改變的就是菜單名稱,根據頁面組。頁面組例如是AboutProducts。首先想到的是向屬於組的每個頁面添加自定義字段並設置屬性"category=About""category=Products"。在functions.php中,我將有一個映射到菜單名稱的類別名稱數組,例如所以在加載菜單之前,我會得到自定義屬性,從數組中讀取菜單名稱值並將其設置爲wp_nav_menu函數的參數。有沒有更優雅的方式來做到這一點?

回答

0

我找到的解決方案比較簡單。子菜單中的第一頁(例如,當您按關於時的歷史記錄)可以被視爲類別主頁面,因此我將所有其他頁面鏈接到子菜單中,並將第一頁(歷史記錄)作爲其父頁。然後,我通過儀表板創建了一個子菜單,並將其稱爲歷史子菜單。這使得這項工作的代碼很簡單:

<?php $submenuName = get_the_title($post->post_parent); 
     $submenuName = $submenuName . " Submenu"; 
     wp_nav_menu(array('menu' => $submenuName, 'menu_id' => 'submenu', 'container' => 'false')); 

get_the_title得到任何父頁面名稱,或者,如果沒有父母,頁面名稱。雖然與使用自定義字段沒有多大區別,但我認爲它更優雅sin

0

而不是自定義字段,您可以使用is_category函數來確定應用哪個子菜單。如果您的子菜單名稱與類別同步,則可以以自動方式工作。

+0

類別不起作用,我正在處理頁面。 – Andrija

相關問題