这是可能的,但是,所需的努力并不是微不足道的,也没有表现出来,我建议不要这样做。
您的区域分类法将具有类似以下内容的重写规则:
regions/(.+?)/?$ -> region: (.+?)
你想要的是类似的东西:
(.+?)/?$ -> region(.+?)
这里的问题是,这条规则并不仅仅是一个例子。com/uk它也抓住了这个例子。com/利兹示例。com/about页面示例。com/feed/etc太冗长了。
因此,没有通用的方法来做这件事。这意味着需要额外的规则和2个选项,这两个选项都会减慢解析URL的过程:
1: Define them all manually
这是迄今为止最快的方法。这里的代价是时间。
e、 g.:
uk -> region: uk
fr -> region: fr
或在代码中:
function custom_rewrite( $wp_rewrite ) {
$feed_rules = array(
\'uk\' => \'index.php?region=uk\',
\'fr\' => \'index.php?region=fr\',
);
$wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}
// refresh/flush permalinks in the dashboard if this is changed in any way
add_filter( \'generate_rewrite_rules\', \'custom_rewrite\' );
添加/编辑/删除永久链接后,您需要刷新永久链接才能使URL正常工作。
2: Do the above but dynamically
这里的问题是,这使得规则生成的成本更高,而且随着术语数量的增加,生成的成本也越来越高。这还意味着您需要向该分类术语的添加/编辑/删除挂钩添加一个挂钩,以便刷新永久链接,以便重新生成它们。
您需要获取区域分类法的所有术语并遍历它们,在添加到重写规则之前向数组中添加适当的条目。
What about the child terms?
您可以手动定义它们,也可以在循环中添加检查以重写为regions/TermNameGoesher。您可以执行此步骤,但WordPress可能会自动将浏览器重定向到更长的URL名称,例如region/uk/leeds,这可能是您喜欢的,也可能不是您喜欢的。
More details on rewrite rules
你可以在这里找到我对另一个问题的答案,这里有很多链接:
Pretty URL with add_query_var
此外,我还建议Monkeyman在开发过程中重写测试规则,以准确地了解URL所采用的规则以及变量的去向。你可以在上面链接的答案中找到该插件的链接