2011-07-22 6 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();?> 

、さんが変わる唯一の事は、ページ・グループに応じて、メニュー名であるとしましょう。ページグループは、例えば、 AboutおよびProducts。最初に気になるのは、グループに属する各ページにカスタムフィールドを追加し、プロパティーを"category=About"または"category=Products"に設定することです。 functions.phpには、メニュー名にマッピングされたカテゴリ名の配列があります。 "About = About Menu"、メニューをロードする前に、カスタムプロパティを取得し、配列からメニュー名の値を読み込み、wp_nav_menu関数の引数として設定します。これを行うよりエレガントな方法はありますか?

答えて

0

私が見つけた解決策は比較的簡単です。サブメニューの最初のページ(たとえば、Aboutを押すと履歴)はカテゴリのメインページとして表示されるので、サブメニューでリンクされている他のすべてのページを取り出し、最初のページ(履歴)を親として配置します。次に、ダッシュボードでサブメニューを作成し、履歴サブメニューを呼び出しました。親、ページ名がない場合は、

<?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は、どちらかの親ページ名を取得しますか:この作業を行うコードは簡単です。カスタムフィールドを使用する以外には違いはありませんが、より洗練された罪だと思います。

0

カスタムフィールドではなく、is_category関数を使用して、適用するサブメニューを決定することができます。サブメニュー名がカテゴリと同期している場合、これは自動的に機能します。

+0

カテゴリは機能しません。ページを扱っています。 – Andrija

関連する問題