我有一个自定义分类分配给两种帖子类型。如何为每种帖子类型的不同术语档案创建URL?

时间:2016-05-17 作者:Andreyu

我正在为一个客户端开发一个站点,并使用一个插件添加“event“自定义帖子类型和”event-category“分类法。

我还使用register_taxonomy_for_object_type 作用

现在,我有了以下工作URL方案:

使用URL结构访问帖子site-name.com/article/post-slugsite-name.com/event/event-slugsite-name.com/events/event-category-slug我使用pre_get_posts 使用以下代码执行操作:

if (!$query->is_admin() && $query->is_main_query() && is_tax(\'event-category\')) {
    $query->set(\'post_type\', \'event\');
}
我的问题是,我还想拥有只显示帖子的类别归档页面。

如果可能,最好通过URL访问这些内容site-name.com/articles/event-category-slug

但如果这不可能,那么可以使用不同的URL,只要它指向一个只列出该特定事件类别中的帖子的页面。

我们将非常感谢您对实现此目标所需的重写规则的任何帮助。我找到了一些描述类似问题的文章,但我没能让它们对我有用。

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

我最终找到了一个解决方案:

首先pre_get_posts 我最初的操作并不好,因为事件和帖子都使用相同的模板显示(taxonomy event category.php)。我在pre\\u get\\u posts中编写的代码强制wordpress只显示该模板中的事件,因此我将其删除。

我将其替换为以下代码,该代码根据post\\u type query var过滤查询:

if (is_tax(\'event-category\')) {
    $query->set(\'post_type\', get_query_var(\'post_type\', \'event\'));
}
(如果没有post\\u类型的查询变量,则默认为事件)。

然后我添加了以下重写规则,这使Wordpress能够识别articles/event-category-slug URL

add_rewrite_rule(\'^articles/(?!page)(.+?)(?:/page/([0-9]*))*/?$\', \'index.php?post_type=post&event-category=$matches[1]&paged=$matches[2]\', \'top\');
需要regex的(?!page)
部分,以便该规则不会在分页URL上触发,如文章/页/2,但仍会在文章/事件类别slug/页/2上触发

我不是regex的专家,所以也许有更好的方法来编写这个规则,但它似乎是有效的。

SO网友:stoi2m1

我认为您的问题是在向帖子注册自定义分类法时的重写部分。

\'rewrite\' => array(\'slug\' => \'some-slug\', \'with_front\' => false)
你可以用任何你喜欢的东西来代替鼻涕虫。可以用article/event-category 以获得您想要的结果。

背景with_frontfalse 删除博客作为前缀。如果您已将博客前缀更改为文章。那么你应该可以设置with_fronttrue 和替换some-slug 带有“事件类别”

这里有一个链接,提供有关注册自定义分类法的更多信息https://clarknikdelpowell.com/blog/the-right-way-to-do-wordpress-custom-taxonomy-rewrites/

EDIT:您是否可以从下面的链接执行以下完全未经测试、已创建的示例代码:

register_post_type(
    \'post\',
    array(
        \'taxonomies\' => array( \'event-category\' )
    ),
    array(
        \'rewrite\' => array(\'slug\' => \'some-slug\', \'with_front\' => false)
        // other arguments may be needed from other registration of taxonomy
    )
);
参考号:Can multiple custom post types share a custom taxonomy?

相关推荐