2011-10-03 149 views
0

對於這個無疑在本網站上無數次回答的直接問題,我很抱歉,但我無法弄清楚爲什麼我的重寫規則沒有生效。Wordpress基本自定義重寫規則

這裏是我的代碼:

add_action('init', 'update_rewrite_rules'); 
function update_rewrite_rules(){ 
    add_rewrite_rule('^org/([^/]+)', 'index.php?pagename=about-us&org=$matches[1]', 'top'); 
    add_rewrite_tag('%org%', '[0-9]+'); 
} 

據我所知,這應該轉變 「myurl.com/org/13」 到「myurl.com/index.php?pagename=about-su &有機= 13" 。我究竟做錯了什麼???

我可以將它寫入.htaccess文件中,但是,當然,我遇到了Wordpress的自定義PHP重寫函數取代我的代碼的問題,因此只找到變量,而不是頁面。

無論如何,任何意見或問題要考慮將不勝感激!謝謝。

回答

1

我相信你必須在實際重寫規則之前註冊你的查詢變量。此外,如Wordpress Rewrite API中所述,只有刷新新規則並重新生成緩存時纔會識別新規則。

//Ensure the $wp_rewrite global is loaded 
global $wp_rewrite; 
//Call flush_rules() as a method of the $wp_rewrite object 
$wp_rewrite->flush_rules(); 

需要注意的是,出於性能考慮,你不應該這樣做每一項要求,只在你的插件激活。

add_action('admin_init', 'flush_rewrite_rules'); 

還有另一種方法來添加自定義重寫規則,如Custom Quesries中所述。