如何仅在某些页面上显示菜单?


10

我不想使用侧边栏小部件来告诉它们应该在哪个页面上可见,我喜欢选择菜单设置以显示在特定页面上。

默认的Wordpress方式:

默认外观

因此,项目是一个页面,并包含一些子页面。但是,如果我又有10个以上处于相同情况的页面和子页面,该怎么办?

我想添加一个额外的设置(顶层页面列表):

我要在哪里设置

但是加载这些设置后,我找不到任何文档,操作,过滤器等。


我认为这取决于您的主题。但作为起点,codex.wordpress.org / Navigation_Menus应该有所帮助!
2014年

1
我看过很多次该链接,没有关于向菜单添加设置的信息。仅创建和显示自定义菜单...

哎哟。我认为这是Joomla的本机选项,显然不在WordPress中。对于您的站点,您可以创建自定义输出category / pages.php文件,然后在其中添加一个唯一的自定义菜单,但这总会给您带来麻烦。您将有四个输出.php页面和四个唯一菜单,上面的每个选择一个。一种简单的实现方法是使用侧边栏小部件作为您的主要导航工具。自定义菜单小部件工具非常简单。假设每个页面都有唯一的模板,请为每个页面创建一个菜单。请注意,侧边栏不是最好的词。您可以在任何地方放置小部件。
zipzit 2014年

我知道侧边栏和小部件。这些小的网站部分也未连接到页面。我不想使用侧边栏和小部件并禁用它们,因为我不使用它们中的任何一个。无论如何,我认为菜单位置是菜单的设置,而不是包含菜单的小部件的设置。

您的问题只是“我如何添加自定义菜单设置?” 还是“我如何使用自定义菜单设置仅在某些页面上显示菜单?”?
engelen 2014年

Answers:


3

这是一个不错的选择,但是我同意sri,现在它确实取决于您的主题。您可以通过is_page()来解决。您需要在page.php主题文件中编写如下内容:

<?php
    if (is_page('projects')) {
        if ( is_active_sidebar( 'sidebar-navigation' )) {
            dynamic_sidebar( 'sidebar-navigation' );
        }
    }
?>

如果还要在其他页面上显示侧边栏,则可以使用逻辑类似的方法:

if (is_page('projects') || is_page('home') || is_page('post-page'))

我不知道有更好的解决方案,但这在编码世界中确实是一种不好的做法。我在想,至少可以遍历数组或其他东西然后执行菜单交换。绝对感谢答案。叹息
BRogers '16

1

我认为为此使用插件会更好,因此即使将来更改主题,您也可以保留其功能。看看这个插件。它可以实现您想要的功能,但与您模拟它的方式略有不同。

https://wordpress.org/plugins/page-specific-menu-items/

如果有帮助,请投票或接受作为答案。谢谢!


我已经尝试过这个插件。使用此插件,您只能选择特定帖子类型的菜单。我想为每个页面选择菜单。

如果整个站点只有一个菜单,并且只想在用户位于某个页面上时隐藏该菜单中的某些链接,则此插件会执行此操作。选择帖子类型后,您要在菜单上(页面是您想要的,或更多),然后编辑页面,然后可以检查要隐藏的链接。另一个则相反。您从编辑页面屏幕上的metabox中选择菜单,因此您需要多个菜单可供选择: wordpress.org/plugins/ce-wp-menu-per-page
Mark.C 2014年

1

这是在复制到子主题的二十十二个主题header.php中实现的方法。

<?php if ( is_page('projects') ) : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'conditional-menu-name', 'menu_class' => 'nav-menu' ) ); ?>
<?php else : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'Primary', 'menu_class' => 'nav-menu' ) ); ?>
<?php endif; ?>

用要显示的项目创建一个新菜单,并将上面代码中的条件菜单名称换成菜单名称。

menu_class名称可能需要更改为“十二二十二”以外的主题。

资源


1

我知道这个线程很旧,但是如果有人需要搜索答案,我想建议他们使用条件菜单https://themify.me/conditional-menus。您可以选择要使用的菜单,每页,类别,元数据,所有内容。它是免费的:)希望这会有所帮助


0

如果您愿意重新使用窗口小部件并想要一个简单的解决方案,则可以使用名为Display Widgets的插件。我已经使用了此方法,并使用了文本部分,您可以在其中添加指向您想去的地方的链接。无论链接是在您自己的网站上还是到另一个网站,它都可以工作。它在文本下方有一个空格,您可以在其中选择要显示或隐藏的页面。您仍然可以删除不使用的小部件。

在寻找并找到此插件之前,我在菜单上玩了一段时间。它运作良好。

您可以在WordPress.org的“插件”部分中找到它。


非常感谢你!但是我没有在寻找额外的插件。而且我不使用小部件,因为这些浮动网站部分对于我的某些客户来说太难理解了。

0

一种选择是为您拥有的每个菜单制作自定义模板。(这是指主题位置复选框),然后在每个页面上,选择要使用的模板,它还将使用与该模板关联的菜单。

https://codex.wordpress.org/Page_Templates

它会给您与我想找到的结果相同的结果,但是您将告诉每个页面将显示什么菜单,而不是告诉每个菜单将显示什么页面。这样做的另一个好处是,您无法无意间将两个菜单同时放在同一位置。


是的,我已经看过了。但是开发人员永远不知道用户需要多少菜单。因此,我必须创建很多模板来涵盖所有模板。template_a.phptemplate_b.phptemplate_c.php

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.