2014-12-03 68 views
0

我想添加一個簡單的自定義Wordpress重寫規則,但不知何故我沒有得到這個工作。Wordpress自定義重寫規則不起作用

此URL

http://www.gewerbesteuer.de/steuer/muenchen 應該調用此

http://www.gewerbesteuer.de/index.php?pagename=gewerbesteuerhebesaetze&loc=muenchen

所以我想打一個頁面,顯示某個城市的稅率,城市應該在url中作爲最後一部分。

這裏是我的代碼:

function custom_rewrite_tag() { 
    global $wp_rewrite; 
    add_rewrite_tag('%loc%', '([^&]+)'); 
    add_rewrite_rule('steuer/([^/]+)', 
     'index.php?pagename=gewerbesteuerhebesaetze&loc=$matches[1]', 'top');  
    flush_rewrite_rules();  
} 

function query_vars($query_vars) { 
    $query_vars[] = 'loc'; 
    return $query_vars; 
} 

add_action('init', 'custom_rewrite_tag'); 
add_filter('query_vars', 'query_vars'); 

重寫規則工作,但參數(在這種情況下,LOC)不拾取。即使我硬編碼重寫規則與某個城市如

add_rewrite_rule('steuer/([^/]+)', 
    'index.php?pagename=gewerbesteuerhebesaetze&loc=muenchen', 'top'); 

它仍然doesen't拿起loc參數的值。我還注意到$ matches數組是空的並且不包含任何值。 我經歷了wordpress的所有文檔和這裏的問題,但無法找到問題。有任何想法嗎?

感謝

伯恩哈德

回答

0

你能嘗試添加這一點,看看這有什麼差別?

編輯

我已經從「pagename」到「page_id」改變了放慢參數的重寫規則 - 我假設它2207因爲那是什麼它看你的網站的頁面上的體類說。

我也從custom_rewrite_rules_tags函數中刪除了flush_rewrite_rules(),你現在可以試試這個,然後進入Options> Permalinks並重新保存。

function custom_rewrite_rules_tags() { 
    global $wp_rewrite; 
    add_rewrite_tag('%loc%', '([^&]+)'); 
    add_rewrite_rule(
     'steuer/([^/]+)', 
     'index.php?page_id=2207&loc=$matches[1]', 
     'top' 
    );   
} 
add_action('init', 'custom_rewrite_rules_tags'); 

function custom_query_vars($query_vars) { 
    $query_vars[] = 'loc'; 
    return $query_vars; 
} 
add_filter('query_vars', 'custom_query_vars'); 
+0

感謝您的快速回答,我補充說,它仍然是一樣的。 – Bernie 2014-12-03 10:38:57

+0

沒問題,你有沒有試過平常的小事 - 重新保存選項>永久鏈接中的永久鏈接? – 2014-12-03 10:39:47

+0

我剛纔試過,現在還是一樣的 – Bernie 2014-12-03 10:43:44