2016-10-05 15 views
0

以下は私のリンク先ページ "製品"です。それは2列を表示し、左側はセカンダリナビゲーション、右側はコンテンツです。私は誰かが主要なナビゲーション "製品"をクリックした場合それが欲しい。 2番目のナビゲーションでは、最初の項目は太字で表示され、内容が表示されます。ランディングページ「製品」の場合ワードプレスプライマリおよびセカンダリナビゲーション

<?php 
/* 
    Template Name: Product Navigation Page 
*/ 
?> 

<?php get_header(); ?> 

    <div class="container page-border-top"> 

    <div id="product-navigation" class="col-md-3" style="border: 1px solid green;"> 

    <div id="navbar" class="navbar-collapse collapse"> 

     <?php 

     $args2 = array(
      'menu'  => 'product-menu', 
      'menu_class' => 'nav navbar-nav', 
      'theme_location' => 'product-menu', 
      'container' => 'false' 
     ); 
     wp_nav_menu($args2); 

     ?> 

    </div><!--/.navbar-collapse --> 

    </div> 

    <div class="col-md-9" style="border: 1px solid red;"> 
     <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 

      <?php the_content(); ?> 

     <?php endwhile; endif; ?> 
    </div> 

    </div> 

<?php get_footer(); ?> 
+0

主NAVからのリンク「製品」の後ろのページ、最初の項目のためのページということですか? –

+0

はい、リンク先ページです。私は、「商品」をリンク先ページとして使用し、セカンダリナビゲーションが添付されます。セカンダリナビゲーションのすべてのアイテムを「製品」の親として設定して、テンプレートを使用するようにしました。 thanks – sonny

+0

この場合、2番目のnavは通常のcssクラス名を提供し、最初の項目は 'current-menu-item'クラスを持つ必要があります。したがって、このクラスを太字でスタイルすることができます。 –

答えて

0

は、親を持たない、と「製品」のすべての製品の子ページ場合は、ランディングページとすべての子ページ(製品)のために、このテンプレートファイルを使用することができます。

<?php 
/* 
    Template Name: Product Navigation Page 
*/ 

$redirect = false; 
$parent_id = wp_get_post_parent_id($post->ID); 

if (! $parent_id) { 
    $redirect = true; 
    $parent_id = $post->ID; 
} 

// get all child's 
$all_wp_pages = $wp_query->query(array(
    'post_type' => 'page', 
    'order' => 'ASC', 
    'orderby' => 'menu_order', 
    'post_status' => 'publish' 
)); 

$childs = get_page_children($parent_id, $all_wp_pages); 

if ($redirect) { 
    wp_redirect(get_permalink($childs[0]->ID)); 
    exit; 
} 

$current_page_id = $post->ID; 

?> 

<?php get_header(); ?> 

    <div class="container page-border-top"> 

    <div id="product-navigation" class="col-md-3" style="border: 1px solid green;"> 

    <div id="navbar" class="navbar-collapse collapse"> 

     <ul class="menu"> 
     <?php foreach ($childs as $child): ?> 
      <li class="<?php if ($current_page_id == $child->ID): ?>current-menu-item<?php endif; ?>"><a href="<?php the_permalink($child->ID); ?>"><?php echo $child->post_name; ?></a></li> 
     <?php endforeach; ?> 
     </ul> 

    </div><!--/.navbar-collapse --> 

    </div> 

    <div class="col-md-9" style="border: 1px solid red;"> 
     <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 

      <?php the_content(); ?> 

     <?php endwhile; endif; ?> 
    </div> 

    </div> 

<?php get_footer(); ?> 

製品のメニューを作成する必要はありません。すべての子ページが一覧表示され、注文フィールド(ページ属性)で商品を並べ替えることができます。ステップバイ

ステップ:

  1. 「製品」のチャイルズなど、いくつかの製品ページを作成し、選択し
  2. (製品ナビページ)ページ「製品」を作成し、それのために上記のテンプレートファイルを選択します上記のテンプレートファイル(Product Navigation Page)も参照してください。

テンプレートファイルは、自動的に目的のセカンダリナビゲーションを左側に作成します。現在の製品にはCSSクラスcurrent-menu-itemがあるため、太字でスタイルを設定できます。

この部分は、第二のNAVを生成します。

<ul class="menu"> 
    <?php foreach ($childs as $child): ?> 
    <li class="<?php if ($current_page_id == $child->ID): ?>current-menu-item<?php endif; ?>"><a href="<?php the_permalink($child->ID); ?>"><?php echo $child->post_name; ?></a></li> 
    <?php endforeach; ?> 
</ul> 
+0

セカンダリナビゲーションは不要ですか? 主なナビゲーションの「製品」(親)私は子供の注文を親の下に表示するように設定しますか?しかし、どうすればページの左側に表示できますか? – sonny

+0

私は自分の答えを更新しました。 –

+0

私はこれを行いましたが、子ページは表示されませんでした。製品ナビゲーションページ(テンプレートページ)に挿入して表示させる必要があるコードはありますか? – sonny