基于页面标题的条件菜单

时间:2016-11-29 作者:user53340

我希望为特定页面创建和显示一个单独的菜单。此菜单需要位于主位置。例如,在主页和联系人页面上,您会看到:主页|关于我们|联系人。在“关于我们”页面上,您可以显示不同的菜单,例如:菜单链接1 |菜单链接2 |菜单链接3。我一直在努力让我们这样做,但运气不好。我真的已经看了这么长时间了,我甚至不知道从哪里开始(我希望它与下面的代码类似..无论如何,任何帮助都将不胜感激。谢谢

function my_example_menu() {
  register_nav_menu(\'example-menu\',__( \'Example Menu\' ));
}
add_action( \'init\', \'my_example_menu\' );

wp_nav_menu( array( 
    \'theme_location\' => \'my-example-menu\', 
    \'container_class\' => \'my-example-menu-class\' ) ); 

function my_display_example_menu() {
  if (is_page(\'about-us\')) {
  unregister_nav_menu( \'Primary Navigation\' );
  register_nav_menu( \'Example Menu\' );
  }
}
//编辑

父主题导航

<?php truethemes_before_primary_navigation_hook();// action hook ?>

<nav role="navigation">
<?php if(\'true\' == $ubermenu):
    wp_nav_menu(array(
        \'theme_location\' => \'Primary Navigation\' ,
        \'depth\'          => 0 ,
        \'container\'      => false ,
        \'walker\'         => new description_walker() ));
else: ?>
<ul id="menu-main-nav" class="sf-menu">
<?php wp_nav_menu(array(
        \'theme_location\' => \'Primary Navigation\' ,
        \'depth\'          => 0 ,
        \'container\'      => false ,
        \'walker\'         => new description_walker() )); ?>
</ul>
<?php endif; //end uberMenu check  ?>
</nav>
<?php truethemes_after_primary_navigation_hook();// action hook ?>

2 个回复
最合适的回答,由SO网友:Fabian Marz 整理而成

正如您从documentation register_nav_menu 用于在菜单编辑器中注册菜单。您的代码将只影响后端。您还应该传递一个类似于slug的字符串作为第一个参数。如果要更改菜单的显示,只需编写一个条件,即可更改wp_nav_menu. 如下所示:

// header.php (or similar)
wp_nav_menu([
  \'menu\' => (is_page(\'about-us\') ? \'primary-navigation\' ? \'example-menu\'),
]);
否则,您也可以注册菜单并更改theme_location 参数使菜单可由用户配置。

更新:

通过过滤器挂钩实现

// functions.php
add_filter(\'wp_nav_menu_args\', function ($args) {
  if (is_page(\'about-us\')) {
    $args[\'menu\'] = \'my-custom-menu\';
  }
  return $args;
});

SO网友:Dan.

1-复制父主题的header.php 融入您的孩子主题。

2-要创建自定义字段,如果您不太了解WP,我建议使用Advanced Custom Fields plugin.

阅读他们网站上的文档。您希望创建一个选择/下拉或单选类型字段,并将其用于所有帖子类型和页面。

对于您拥有的每个菜单,为自定义字段指定一个值。

为自定义字段指定一个默认值-您将使用最多的菜单的默认值(这样可以节省一些时间)

3-给其他页面/帖子另一个菜单。

4-在子主题的标题中。php,更改此选项:

<?php if(\'true\' == $ubermenu):
    wp_nav_menu(array(
    \'theme_location\' => \'Primary Navigation\' ,
    \'depth\'          => 0 ,
    \'container\'      => false ,
    \'walker\'         => new description_walker() ));
else: ?>
 <ul id="menu-main-nav" class="sf-menu">
 <?php wp_nav_menu(array(
    \'theme_location\' => \'Primary Navigation\' ,
    \'depth\'          => 0 ,
    \'container\'      => false ,
    \'walker\'         => new description_walker() )); ?>
</ul>
<?php endif; //end uberMenu check  ?>
收件人:

<?php 
$menu_to_use = get_field(get_the_ID(), \'meta_key_of_custom_field\');
if(\'true\' == $ubermenu):
    wp_nav_menu(array(
    \'theme_location\' => $menu_to_use, // make sure that the values of the custom field are the names of the menus (e.g. Primary Menu)
    \'depth\'          => 0 ,
    \'container\'      => false ,
    \'walker\'         => new description_walker() ));
else: ?>
 <ul id="menu-main-nav" class="sf-menu">
 <?php wp_nav_menu(array(
    \'theme_location\' => $menu_to_use, // make sure that the values of the custom field are the names of the menus (e.g. Primary Menu)
    \'depth\'          => 0 ,
    \'container\'      => false ,
    \'walker\'         => new description_walker() )); ?>
</ul>
<?php endif; //end uberMenu check  ?>

相关推荐

无法将设置添加到“NAV_MENUS”定制器面板

我试图在自定义程序的“菜单”面板中添加一个复选框,但由于某些原因,它没有显示出来。如果我尝试将其从“nav\\u菜单”更改为“title\\u tagline”或“colors”,复选框会显示得很好。是什么阻止它显示在“菜单”面板上?// add custom options to the Customizer function nssra_customizer_options($wp_customize) { // add \"menu primary flex\" checkb