导航不会更新以显示单个帖子的完整路径

时间:2012-10-14 作者:user20628

我有一个网站,有一个自定义的帖子类型“projects”,还有两个分类法“clients”和“mediums”。对于导航,我使用一个自定义的导航walker(它扩展了walker\\u nav\\u菜单)。这一切都非常有效,并允许URL,例如:

/媒体/打印/(显示打印项目的选择)/客户/客户(显示客户的项目选择)

我有客户端和介质的页面模板,以及分类客户端的模板。php和分类媒介。php。理想情况下,我希望能够让这些URL和nav继续通过客户端或媒体选择单个项目,例如。

/媒体/印刷品/项目A/客户/客户/项目A

但在经过很长时间的搜索和太多论坛的搜索之后,Wordpress似乎不可能做到这一点。因此,我不得不选择一条道路:

/媒体/印刷品/项目-A

使其工作,而不仅仅是在/projects/project-A下显示所有单个项目

我正在为“post\\u type\\u link”添加一个过滤器挂钩,该挂钩修改链接以遵循/mediums/print/project-a的完整结构,并且在自定义post类型中,我使用占位符%mediums%,该占位符被相关的分类术语替换。

同样,这一切都很好,现在允许通过客户端或媒体浏览并选择项目,然后选择完整的URL。

我现在遇到的问题是导航没有显示单个项目的任何状态。php模板(nav是全局的,位于侧栏中)。我可以看出,这很可能是因为尽管我已设法获得URL和工作链接,显示完整路径WP,因此walker不会将自定义帖子类型项目视为位于媒体/媒体术语下方,因此不会创建显示此状态所需的导航项。

有人知道我怎样才能让步行者“看到”这段关系吗?

我认为,用户希望通过项目分类法以这种方式有选择地深入到一个项目,并在树的末尾登陆该项目,而不是跳出到/projects/project-a,在导航中不反映状态,这是不合理的。

谢谢

1 个回复
SO网友:Fabien Quatravaux

我不明白你为什么选择使用定制导航助行器,以及你是如何做到这一点的。当您希望显示带有不适合wp_nav_menu 输出在您的情况下,您希望更改链接本身,而不仅仅是html格式。

我认为通过使用rewrite rule. 该规则将任何自定义格式的URL转换为与默认Wordpress格式匹配的另一个URL。

如果我很了解您的需要,您必须添加以下规则:

add_rewrite_rule(\'^mediums/([^/]*)/([^/]*)/?\',\'index.php?mediums=$matches[1]&project=$matches[2]\',\'top\');
add_rewrite_rule(\'^clients/([^/]*)/([^/]*)/?\',\'index.php?clients=$matches[1]&project=$matches[2]\',\'top\');
将此代码添加到init 钩子,你应该能够达到预期的结果。

现在,要显示导航菜单,应使用get_terms 函数列出分类法术语并显示相应的链接。

结束

相关推荐

REGISTER_NAV_MENUS和wp_NAV_MENU问题,不显示独立菜单

我的问题是wordpress没有将两个菜单显示为单独的菜单,它只是将菜单上的内容输出到两个位置。URL:http://www.msc-media.co.uk检查页眉和页脚的链接-我知道页脚很难看,以后需要整理css。我在函数中创建了两个菜单。php使用此代码。<?php register_nav_menus( array( \'topmenu\' => \'Top Menu\', \'footermenu\' => \'Fo