這篇文章主要介紹了WordPress中用于更新偽靜態(tài)規(guī)則的PHP代碼實(shí)例講解,圍繞flush_rewrite_rules()函數(shù)的使用展開(kāi)來(lái)講,需要的朋友可以參考下。
flush_rewrite_rules() 函數(shù)用來(lái)刪除然后根據(jù)現(xiàn)有的條件重寫(xiě)偽靜態(tài)規(guī)則,也就是刷新一次偽靜態(tài)規(guī)則了。
先來(lái)說(shuō)一下,通常在主題或者插件添加新的自定義文章類(lèi)型的時(shí)候調(diào)用,防止新的自定義文章類(lèi)型的文章出現(xiàn) 404 的情況,或者很多時(shí)候我們都需要在主題啟用的時(shí)候執(zhí)行一些代碼,比如布置一些數(shù)據(jù)庫(kù)表單、跳轉(zhuǎn)到設(shè)置頁(yè)面等等,WordPress 本身并沒(méi)有提供相關(guān)的鉤子,網(wǎng)上也有很多五花八門(mén)的實(shí)現(xiàn)方法,經(jīng)過(guò)我的研究,發(fā)現(xiàn)了可能是最優(yōu)的方法,下邊分享給大家:
- /**
- *WordPress 在主題啟用的時(shí)候執(zhí)行一些代碼
- *http://www.endskin.com/theme-activation-action/
- */
- function Bing_theme_activation(){
- if( $GLOBALS['pagenow'] != 'themes.php' || !isset( $_GET['activated'] ) ) return;
- /*
- 這里就可以放置在主題啟用的時(shí)候要執(zhí)行的代碼了,比如跳轉(zhuǎn)到設(shè)置界面:
- wp_redirect( admin_url( 'options-general.php' ) );//注意修改頁(yè)面地址
- die;
- */
- }
- add_action( 'load-themes.php', 'Bing_theme_activation' );
此代碼放在主題和插件里都是有效的。
另外要注意,更新偽靜態(tài)規(guī)則是非常消耗時(shí)間和效率的,所以不要每次執(zhí)行代碼都調(diào)用,只在必要的情況調(diào)用(比如啟用主題和啟用插件),把 flush_rewrite_rules() 掛到 init 鉤子上是極其不正確的。
用法
flush_rewrite_rules( $hard );
參數(shù)
$hard
(布爾)(可選)如果為 True 則一起刷新 .htaccess 文件(hard flush);為 False 則只更新數(shù)據(jù)庫(kù)里的偽靜態(tài)規(guī)則(soft flush)。
默認(rèn)值:True(hard flush)。
例子
在主題啟用的時(shí)候更新偽靜態(tài)規(guī)則:
- function Bing_theme_activation(){
- if( $GLOBALS['pagenow'] != 'themes.php' || !isset( $_GET['activated'] ) ) return;
- flush_rewrite_rules();
- }
- add_action( 'load-themes.php', 'Bing_theme_activation' );
在插件啟用的時(shí)候更新偽靜態(tài)規(guī)則:
- function Bing_myplugin_activate(){
- flush_rewrite_rules();
- }
- register_activation_hook( __FILE__, 'Bing_myplugin_activate' );
其它
此函數(shù)位于:wp-includes/rewrite.php
新聞熱點(diǎn)
疑難解答
圖片精選