如何在激活任何插件时刷新重写规则

时间:2014-05-08 作者:spaceOdysseus

我在函数中创建了一个函数。添加了一些重写规则的php:

function add_rewrite_rules() { 
    add_rewrite_rule(\'events/page/([0-9])*/?\', \'index.php?pagename=events&paged=$matches[1]\', \'top\');
    [...]   
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}
我希望每次激活任何插件时都执行它,因此如果新规则被覆盖,我可以自动恢复它们。有可能吗?

非常感谢。

3 个回复
最合适的回答,由SO网友:Otto 整理而成

将重写规则添加到init 行动挂钩。

在个人激活功能中,a)添加重写规则,b)刷新重写规则。一次。这是你唯一需要刷新规则的时候。

或者,如果重写规则可以通过用户输入更改,则需要在规则更改时刷新规则,而不是在任何其他时间。您仍然需要添加它们init 虽然

SO网友:Milo

将您的函数挂接到init 挂钩,使其始终存在-

function wpd_add_rewrite_rules() { 
    add_rewrite_rule(\'events/page/([0-9])*/?\', \'index.php?pagename=events&paged=$matches[1]\', \'top\');
}
add_action( \'init\', \'wpd_add_rewrite_rules\' );
请参见examples in Codex for flush_rewrite_rules 在插件激活或主题切换中,查看添加规则后在何处刷新规则不刷新重写规则init.

SO网友:birgire

我想知道这是否可行:

add_action( \'activated_plugin\', function(){

    // your stuff here

}, PHP_INT_MAX );
钩子在哪里activated_plugin 在插件激活后激发。

结束

相关推荐