2017-08-30 31 views
1

我目前正在研究一个应包含一些重写规则的小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。相反,它保持在同一页面上。我在这里错过了什么?

+0

确保您没有在固定链接中使用**“发布名称”设置**,并且您已重新保存它们,因为代码发生变化以刷新重写规则。 – FluffyKitten

回答

0

documentation

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

您可以尝试使用flush_rewrite_rules

冲洗重写规则是昂贵的操作,有教程以及建议执行它的“初始化”钩例子。这是不好的做法。它应该在'关机'钩子上执行,或者在插件/主题(de)激活上执行。

所以,你可以使用的功能register_activation_hookregister_desactivation_hook刷新它的插件激活和失活。

0

不,你没有得到“重定向”。这是一个重写规则,而不是重定向规则。 Wordpress从您的网址中获取匹配的正则表达式,并在内部重写为“制造商”查询变量。然后,您可以通过get_query_var()将“制造商”的价值展示给您的脚本。