flush_rewrite_rules() 函数用来删除然后根据现有的条件重写伪静态规则,也就是刷新一次伪静态规则了。

通常在主题或者插件添加新的自定义文章类型的时候调用,防止新的自定义文章类型的文章出现 404 的情况,这个问题参考:https://www.weixiaoduo.com/theme-activation-action/

另外要注意,更新伪静态规则是非常消耗时间和效率的,所以不要每次执行代码都调用,只在必要的情况调用 (比如启用主题和启用插件),把 flush_rewrite_rules() 挂到 init 钩子上是极其不正确的。

用法

1

flush_rewrite_rules($hard);

参数

$hard

(布尔)(可选) 如果为 True 则一起刷新 .htaccess 文件 (hard flush);为 False 则只更新数据库里的伪静态规则 (soft flush) 。

默认值:True(hard flush) 。

例子

在主题启用的时候更新 (更多参考:https://www.weixiaoduo.com/theme-activation-action/) 伪静态规则:

functionBing_theme_activation(){

    if($GLOBALS['pagenow']!='themes.php'||!isset($_GET['activated']))return;

    flush_rewrite_rules();

}

add_action('load-themes.php','Bing_theme_activation');

在插件启用的时候更新 (更多参考:https://www.weixiaoduo.com/register_activation_hook/) 伪静态规则:

functionBing_myplugin_activate(){

    flush_rewrite_rules();

}

register_activation_hook(__FILE__,'Bing_myplugin_activate');

其它

此函数位于:wp-includes/rewrite.php