实际上,我需要更改自定义帖子类型的url结构(我还想自定义分类url,但只针对这个问题的帖子,以避免混淆)
我的自定义帖子类型是具有slug的属性properties
它有一个分类法“属性类别”,其中包含slugproperty_category
要求目前定制岗位类型的结构如下:https://domain.com/properties/postname
对于自定义帖子类型,我希望在url中包含类别和子类别,并删除properties
鼻涕虫状https://domain.com/property_category/property_sub_category/**/postname
通过使用插件(自定义帖子类型Permalinks),我可以获得这个urlhttps://domain.com/properties/property_category/property_sub_category/**/postname
正如你所看到的,我上面的urlproperties
我必须把它移走,所以在我来之前一切都很好。
之后,我从url中删除了属性,并添加了功能来检查我的属性自定义帖子类型以及帖子和页面,以便我的url成为https://domain.com/property_category/sub_category/**/postname
但这意味着给我404。
此url正在运行,但我不需要此urlhttps://domain.com/property_postname
我相信WordpressReWrite API
可以解决此问题,但无法找到实际的解决方案。
在此方面的任何帮助都将不胜感激。
最合适的回答,由SO网友:Mehmood Ahmad 整理而成
我面临的问题已经详细描述过了。我想wordpress重写api可以解决这个问题,所以我找到了解决方案。我的帖子只有两个主要类别,所以我将它们映射到我的属性,因为我正在从url中删除custom\\u post\\u type name,所以应该有一些东西来标识和映射url。
/**
* Rewriting url
*/
function mak_rewrite_add_rewrites()
{
// Mapping Property
add_rewrite_rule(
\'^category_one_name(/[\\S]*)+(/[\\S]*)$\',
\'index.php?property=$matches[2]\',
\'top\'
);
add_rewrite_rule(
\'^category_two_name(/[\\S]*)+(/[\\S]*)$\',
\'index.php?property=$matches[2]\',
\'top\'
);
}
add_action(\'init\', \'mak_rewrite_add_rewrites\');
$matches[2]
表示从正则表达式的第二个括号中获取值。