我目前正在研究一个应该包含一些重写规则的小型WP-Plugin。出于测试目的,我设置了以下功能:
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
。相反,它停留在同一页面上。我在这里缺少什么?
答案 0 :(得分:0)
重要提示:修改规则后,不要忘记刷新并重新生成重写规则数据库。从WordPress管理屏幕,选择设置 - >永久链接,只需点击保存更改,无需任何更改。
您可以尝试使用flush_rewrite_rules。
刷新重写规则是一项昂贵的操作,有一些教程和示例建议在' init'上执行它。钩。这是不好的做法。它应该在'关闭'执行。钩子,或插件/主题(de)激活。
因此,您可以使用函数register_activation_hook和register_desactivation_hook在插件激活和停用时刷新它。
答案 1 :(得分:0)
不,你没有被重定向"。它是重写规则,而不是重定向规则。 Wordpress从您的网址获取匹配的正则表达式,并在内部将其重写为“制造商”#39;查询变量然后你可以揭示'制造商'的价值。使用get_query_var()
到您的脚本。