使用WP重写删除分类库

时间:2011-11-04 作者:Mattvic

我正在尝试创建以下URL结构:

example.com/attractions                     <-- post type archive
example.com/attractions/taxonomy_term       <-- taxonomy archive
example.com/attractions/van-gogh-museum     <-- custom post type
不幸的是,默认情况下这是不可能的:WordPress需要URL中的分类库,正如SE用户sanchothefat在其对this question:

。。。如果你不想让分类法slug出现,那么你就没有运气了,你不能让slug与你的帖子类型或其他分类法相同,因为它不知道哪个分类法来自哪个术语,什么是帖子

换句话说,WordPress需要这种永久链接结构:

example.com/attractions/taxonomy_base/taxonomy_term
My question:有没有办法使用WordPress重写API来实现这一点?

我想它包括两个步骤:

从URL中删除分类库告诉WordPress它需要显示什么帖子类型更新1我发现了一个代码段,该代码段应该从URL中删除分类库:

global $wp_rewrite;
$wp_rewrite->extra_permastructs[\'taxonomy_base\'] = array(\'%taxonomy_base%\', EP_NONE);
(Source - 见页面底部的最后一个答案)

但这并不是一个完整的解决方案,因为WordPress无法判断这篇文章是分类法存档还是文章类型。。。

更新本文件的作者great article 在使用漂亮URL的高级分类查询中,我写道:

你的问题并不太难,但可能有点棘手。重写规则需要知道第二个术语是什么类型的(…)这就是为什么在类别/标记/分类名称前缀前面加上前缀的原因。您可以创建一个重写,以便将/attractions/之后的所有内容都视为分类URL,但这两个操作都有点棘手

更新#3对于有相同问题的任何人,请查看this discussion 在WordPress上回答。尤其是MikeSchinkel的插件代码可能会有所帮助。

下面是一个有趣的WPCandy示例,它将分类法基础和URL中的术语结合在一起:http://wpcandy.com/pros/experienced/with-multisite

2 个回复
SO网友:David DiGiovanni

我刚刚在Wordpress目录中添加了一个插件,它删除了任何自定义分类法和默认类别分类法的slug基。你可以在这里找到它-http://wordpress.org/extend/plugins/wp-no-taxonomy-base/

SO网友:Some Web Guy

最近,我遇到了同样的情况,在花了一天时间寻找解决方案,但没有找到任何解决方案后,我写了自己的working 解决方案

诀窍是使用Wordpress wp\\u重写,并在Wordpress开始生成永久链接时向其中添加URL。

我已经编写了一个简单的函数来自动完成这一切,并在我的博客上解释了一切(不想将同一代码粘贴两次),所以请随意查看;)

http://someweblog.com/wordpress-custom-taxonomy-with-same-slug-as-custom-post-type/

结束

相关推荐

Custom permalinks

我们有一个自定义类型music./music/ /music/post-name/ 此外,我们还有一个类似标签的分类法genres. 其URL为:/music-genres/genre-name/ 我尝试创建如下URL:/music/ /music/post-name/ /music/genres/ /music/genres/genre-name/ /music-genres/ 应替换为/music/genres/.最后,我们应该得到如下url