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