【问题标题】:Creating Category Specific Menus in WordPress在 WordPress 中创建特定于类别的菜单
【发布时间】:2013-10-09 18:00:38
【问题描述】:

我第一次使用stack-overflow,如果我做错了,请原谅我。

我是 php 新手,目前正在构建我的第一个 WordPress 主题。我希望网站有几个单独的部分,并带有一个侧边栏菜单,该菜单仅显示指向您所在部分中其他页面的链接。例如,如果您正在查看 A 部分的帖子 1,则侧边菜单将显示指向帖子的链接A 部分的 2、3 和 4。菜单在 A 部分的所有帖子上都是相同的。B 部分将有一个不同的菜单来显示它的帖子。该网站将需要大约 25-30 个不同的部分。

我希望通过类别来做到这一点,但我当然愿意接受其他选择。我尝试了几种不同的方法都没有成功。我觉得这应该很简单,我只是缺少一些基本的东西。

我认为我的问题是将我开始时所需的信息称为:

<?php if (is_category('tanzania')) : ?>

   <?php wp_nav_menu(array(
    'theme_location' => 'tanzania-menu'
   )) ?>

<?php elseif (is_category('safrica')) : ?>

   <?php wp_nav_menu(array(
    'theme_location' => 'safrica-menu'
   )) 

<?php else : print('Nope.'); ?>

<?php endif; ?>

这根本不起作用(我相信这对你们所有人来说都是非常明显的)。它正确显示每个菜单,但仅在类别概述页面上。一旦您单击菜单中的链接,它会将您带到帖子的永久网址,然后菜单就会消失。我发现这是因为 in_category 只能看到 /category/ 目录中的页面,但不确定如何修复它。

另一个问题是我的 sidebar.php 太长了。使用上述方法,我基本上有一个巨大的开关,大约 80 行。我不确定这是否不好,但似乎……不明智。每次我试图缩小它时,我都发现它根本不起作用。

感谢您在这方面的帮助,WP 的学习曲线相当不错。

【问题讨论】:

  • 欢迎来到 SO!您能否展示一些您当前正在使用的 PHP 代码?此外,这将有助于确定为什么它不能满足您的需求。这样人们就可以提出改变或改进代码的方法,而不必自己从头开始创建。
  • 谢谢你,马修!我马上开始编辑!
  • 欢迎来到 SO!是的,这是完全可能的 - 并且可以用比您现在拥有的 80 行少得多的代码动态完成 :) 如果您能回答一些问题,我们将能够为您提供帮助。您能否确认您想要的是每个帖子侧栏中的菜单,但该菜单应仅显示指向同一类别中其他帖子的链接(而不是您当前正在查看的帖子)?这样做需要对 single.php 的循环和 sidebar.php 中的另一个循环进行一些更新,该循环仅循环当前类别(但不包括列表中当前查看的帖子)。
  • 谢谢威廉!我想要一个菜单​​,显示给定类别中的所有链接,包括你所在的那个。因此,您在 A 类中的帖子 2 上,然后您可以在 A 类中看到指向帖子 1、2、3 和 4 的链接。如果我可以更清楚或者我是否可以回答任何其他问题,请告诉我!再次感谢您!

标签: php wordpress wordpress-theming


【解决方案1】:

它没有按照您想要的方式工作,因为一旦您离开类别页面,规则就不再适用。

您可以创建一大堆模板 - 每组页面一个。在模板中,您定义了一个自定义侧边栏,您可以在其中添加自定义菜单。但这确实很笨重且耗时。

您真的,真的需要让访问者的事情变得如此复杂吗?如果您不断更改导航表单页面,他们会非常迷失和困惑,试图在站点中找到自己的方式。

【讨论】:

  • 感谢您的回复!这不是主导航菜单,只是一个侧面菜单,可以更轻松地查看相关页面。我相当有信心,该网站的基本结构不会是压倒性的。我希望找到一种填充菜单的方法,这样用户就不需要主导航中的巨大下拉菜单。
  • 另一种方法是识别您想要特定菜单的每个页面,如下所示:is_page( array( tanzania, 'safrica', 'zambia' ) );codex.wordpress.org/Function_Reference/is_page
猜你喜欢
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多