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