繁体   English   中英

向Wordpress插件添加重写规则

[英]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_hookregister_desactivation_hook在插件激活和停用时刷新它。

不,您不会被“重定向”。 这是一个重写规则,而不是重定向规则。 Wordpress从您的网址中获取匹配的正则表达式,并将其内部重写为“ manufacturer”查询变量。 然后,您可以使用get_query_var()将'manufacturer'的值公开给脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM