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