向Wordpress插件添加重写规则

时间:2017-08-30 14:32:06

标签: php wordpress .htaccess

我目前正在研究一个应该包含一些重写规则的小型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。相反,它停留在同一页面上。我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

来自documentation

  

重要提示:修改规则后,不要忘记刷新并重新生成重写规则数据库。从WordPress管理屏幕,选择设置 - >永久链接,只需点击保存更改,无需任何更改。

您可以尝试使用flush_rewrite_rules

  

刷新重写规则是一项昂贵的操作,有一些教程和示例建议在' init'上执行它。钩。这是不好的做法。它应该在'关闭'执行。钩子,或插件/主题(de)激活。

因此,您可以使用函数register_activation_hookregister_desactivation_hook在插件激活和停用时刷新它。

答案 1 :(得分:0)

不,你没有被重定向"。它是重写规则,而不是重定向规则。 Wordpress从您的网址获取匹配的正则表达式,并在内部将其重写为“制造商”#39;查询变量然后你可以揭示'制造商'的价值。使用get_query_var()到您的脚本。