将重写规则添加到Wordpress插件
问题描述:
我目前正在研究一个应包含一些重写规则的小WP插件。出于测试目的,我已经设置了以下功能:将重写规则添加到Wordpress插件
function manufacturer_rewrite_add_var($vars) {
$vars[] = 'manufacturer';
return $vars;
}
add_filter('query_vars', 'manufacturer_rewrite_add_var');
function add_manufacturer_rewrite_rule() {
add_rewrite_tag('%manufacturer%', '([^&]+)');
add_rewrite_rule(
'^manufacturer/([^/]*)/?',
'index.php?manufacturer=$matches[1]',
'top'
);
}
add_action('init', 'add_manufacturer_rewrite_rule');
当我激活插件,进入localhost/manufacturer/audi
我希望重定向到以下几点:localhost/index.php?manufacturer=audi
。相反,它保持在同一页面上。我在这里错过了什么?
答
重要:不要忘了刷新和修改规则后,重新改写规则数据库。从WordPress管理屏幕,选择设置 - >永久链接,只需点击保存更改,不做任何更改。
您可以尝试使用flush_rewrite_rules。
冲洗重写规则是昂贵的操作,有教程以及建议执行它的“初始化”钩例子。这是不好的做法。它应该在'关机'钩子上执行,或者在插件/主题(de)激活上执行。
所以,你可以使用的功能register_activation_hook和register_desactivation_hook刷新它的插件激活和失活。
答
不,你没有得到“重定向”。这是一个重写规则,而不是重定向规则。 Wordpress从您的网址中获取匹配的正则表达式,并在内部重写为“制造商”查询变量。然后,您可以通过get_query_var()
将“制造商”的价值展示给您的脚本。
确保您没有在固定链接中使用**“发布名称”设置**,并且您已重新保存它们,因为代码发生变化以刷新重写规则。 – FluffyKitten