[英]Adding rewrite rules to Wordpress plugin
我目前正在研究小型WP插件,其中应包括一些重写规则。 为了进行测试,我设置了以下功能:
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 。
刷新重写规则是一项昂贵的操作,有些教程和示例建议在“ init”钩子上执行它。 这是不好的做法。 它应该在“ shutdown”挂钩上执行,或者在插件/主题(停用)上执行。
因此,您可以使用函数register_activation_hook和register_desactivation_hook在插件激活和停用时刷新它。
不,您不会被“重定向”。 这是一个重写规则,而不是重定向规则。 Wordpress从您的网址中获取匹配的正则表达式,并将其内部重写为“ manufacturer”查询变量。 然后,您可以使用get_query_var()
将'manufacturer'的值公开给脚本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.