2016-09-09 14 views
1

私はOne Page Menuだけカスタムページテンプレートtemplate-parts/page-homepage.php表示Wordpressのメニュー

を使用している、フロントページに表示される必要があり、私は私のfunctions.php

add_action('after_setup_theme', 'register_my_menu'); 
function register_my_menu() { 
    register_nav_menu('primary', __('Primary Menu', 'visio')); 
    register_nav_menu('onepage', __('One Page Menu', 'visio')); 
} 

に登録した2つのメニューを持っており、他のすべてのページにPrimary Menuが表示されます。

しかし、header.phpにif条件を作成すると、動作しません。常に、フロントページと他のすべてのページにOne Page Menuと表示されます。

if(is_page_template('template-parts/page-homepage.php')) { 
    wp_nav_menu(
     array (
      'menu'   => 'onepage', 
      'container'  => false, 
      'container_id' => false, 
      'menu_class'  => 'nav navbar-nav', 
      'menu_id'   => false, 
      'depth'   => 2, 
      'walker'   => new Description_Walker 
     ) 
    ); 
} else { 
    wp_nav_menu(
     array (
      'menu'   => 'primary', 
      'container'  => false, 
      'container_id' => false, 
      'menu_class'  => 'nav navbar-nav', 
      'menu_id'   => false, 
      'depth'   => 2, 
      'walker'   => new Description_Walker 
     ) 
    ); 
} 

私は間違っていますか?そして、私はこの仕事をどうやって作れますか?

答えて

2

私の考えにはいくつかの方法があります。

1)ホームページと他のページに別々のheader.phpテンプレートを使用する。

2)メニューの位置設定を使用する。

3)メニュー

を表示しかし、あなたのコードで、私はあなたが(

is_page_template('page-homepage.php') 

としてis_page_templateで is_page_template('template-parts/page-homepage.php')を交換しようとすべきだと思うの設定オプションを使用して、それらに応じて)がありますディレクトリには行かない。

function is_page_template($template = '') { 
    if (! is_page()) 
     return false; 

    $page_template = get_page_template_slug(get_queried_object_id()); 

    if (empty($template)) 
     return (bool) $page_template; 

    if ($template == $page_template) 
     return true; 

    if (is_array($template)) { 
     if ((in_array('default', $template, true) && ! $page_template) 
      || in_array($page_template, $template, true) 
     ) { 
      return true; 
     } 
    } 

    return ('default' === $template && ! $page_template); 
} 

2)あなたは、メニューの表示を制御する

register_nav_menus(array(
    'pluginbuddy_mobile' => 'PluginBuddy Mobile Navigation Menu', 
    'footer_menu' => 'My Custom Footer Menu', 
)); 

<?php 
    if (has_nav_menu('footer_menu')) { 
     wp_nav_menu(array('theme_location' => 'footer_menu')); 
    } ?> 

を使用することができます設定メニューの場所を使用して。

3)設定オプションを使用すると、update_option()get_option()を使用できます。

+0

'is_page_template( 'page-homepage.php')を使っても動作しません。メニューの場所設定や設定オプションの使い方を説明していますか? – Halnex

+1

@Halnex私はそれをやるという私の考えについてもう少し詳細を追加するために私の答えを更新しました。 –

+0

ありがとう、感謝します。 – Halnex

関連する問題