嵌套POST类型的WordPress重写规则

时间:2017-01-27 作者:Alexander Holsgrove

我的网站结构相当复杂,似乎无法使URL结构正常工作,包括分页。这主要是为了处理加载指定给特定自定义帖子类型的文章,这些文章可能都是嵌套的。

我的(缩减)登记簿类型:

register_post_type(\'continent\',
    array(
        \'rewrite\' => array(\'slug\' => \'moving-to\'),
    )
);

register_post_type(\'country\',
    array(
        \'rewrite\' => array(\'slug\' => \'moving-to/%continent%\'),
    )
);
所以我有一个类别moving-to, 自定义帖子类型continent 和自定义帖子类型country.

/moving-to/

/moving-to/continent

/moving-to/continent/country

前三个显示类别中的职位、分配给大陆的职位和分配给国家的职位。我无法使用分页与他们一起工作,因为我认为/continent/country 正在干扰/page/n 标页码

/moving-to/page/2 - 工作正常

/moving-to/continent/page/2 - 尝试加载未知国家/地区的“页面”

/moving-to/continent/country/page/2 - 从URL中删除页/2

我假设我需要从重写中排除“页面”的任何国家,或者只是在url中没有嵌套的大陆。

第二部分是能够在每个大陆或国家之后进行分类

/moving-to/continent/category-name

/moving-to/continent/country/category-name

再次分页

/moving-to/continent/category-name/page/2

/moving-to/continent/country/category-name/page/2

/moving-to/continent/country

我意识到这一切听起来有点具体(与主题无关),我基本上是在问如何启用以下URL结构:

/moving-to/
/moving-to/continent/
/moving-to/continent/country
/moving-to/page/2
/moving-to/continent/page/2
/moving-to/continent/country/page/2
/moving-to/continent/category
/moving-to/continent/country/category
/moving-to/continent/category/page/2
/moving-to/continent/country/category/page/2

1 个回复
SO网友:Mark Kaplun

wordpress基于regex的URL解析/路由/“重写”方式的主要问题是regexp缺少任何上下文。您将拥有的所有国家的URL都需要位于一个大陆的特定上下文中。如果有两个国家同名best country, 一个在大陆big 另一个在大陆small, 您将需要如下url/big/best-country/small/best-country.

Wordpress需要/试图通过在URL中定位其slug来理解直接基于URL加载哪个页面,而无需任何额外的DB访问,但在这种结构中它无法做到这一点。它可以找到这个大陆的鼻涕虫,但这个国家的鼻涕虫是有问题的,因为有两种可能的结果。Wordpress实际上永远不会让你陷入这种情况,除非你强迫它进入,并且会附加一个后缀-nnn 当使用已经存在的slug创建第二篇文章时。

唯一的解决方法是在wordpress启动之前实现自己的解析。

但是也许你是在无缘无故地让你的生活变得复杂,因为幸运的是,地球上没有两个国家有相同的名字,所以你可以使用鼻涕虫,比如continent-country 和使用。要转换的htaccess规则continent/country 进入continent-country. 要使其完全正确工作,您还需要处理永久线的计算方式,但这是一个更容易解决的问题。

相关推荐

Permalinks - Archives

WordPress文档说:WordPress offers you the ability to create a custom URL structure for your permalinks and archives. https://codex.wordpress.org/Settings_Permalinks_Screen 我看到此屏幕将如何为特定帖子/页面创建永久链接,但我没有看到此设置屏幕上关于如何为存档帖子/页面创建链接的任何其他详细信息。有人能澄清一下吗?