我已经注册了自定义的帖子类型,它们可以很好地处理正常的URL。我的自定义帖子类型的slug是“members”。现在,我正在尝试为我的自定义帖子类型创建一个自定义永久链接。这是我的$wp\\u write->add\\u规则
$wp_rewrite->add_rule(\'members/.+?/(.+)/$\',\'index.php?post_type=pasha_members&name=$matches[1]\', \'top\');
下面是我的$wp\\u rewrite->规则数组。
array(
[\'members/.+?/(.+)/$\'] => \'index.php?post_type=pasha_members&name=$matches[1]\'
[\'category/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$\'] => \'index.php?category_name=$matches[1]&feed=$matches[2]\'
[\'category/(.+?)/(feed|rdf|rss|rss2|atom)/?$\'] => \'index.php?category_name=$matches[1]&feed=$matches[2]\'
...
);
这是我试图访问的url,我无法找出我做错了什么。
http://wp.dev/members/city1-city2/best-compnay/
当我在设置->永久链接中将永久链接设置更改为默认设置时,我可以使用以下url访问自定义帖子。
http://wp.dev/?post_type=pasha_members&name=best-compnay
如果你需要更多信息,请告诉我。非常感谢您提供任何帮助。
注意:我将add\\u规则放在init中,而不是仅仅为了测试而激活。我还将flush\\u rewrite\\u规则放在init中,它也是暂时的,直到它被修复为止。
最合适的回答,由SO网友:Jan Fabry 整理而成
WordPress似乎切断了决赛/
在它开始匹配URL之前。因此,在regex中使其成为可选的,它应该可以工作:
members/.+?/(.+)/?$
如果城市和公司部分不包含斜杠,则可以更清楚地使用斜杠
[^/]+
匹配它们(“所有内容都到了斜杠”)。那么您的正则表达式将变成:
members/[^/]+/([^/]+)/?$
我创建了
a plugin to analyze your rewrite rules, 使用和调试规则非常容易。虽然你让我发现了一个错误:它没有删除最后的斜杠,所以你的第一个正则表达式在我的分析器中匹配,但在“真正的”WordPress中却不匹配。我会很快更新的!