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