2017-08-30 30 views
1

我目前正在研究一個應包含一些重寫規則的小WP插件。出於測試目的,我已經設置了以下功能:將重寫規則添加到Wordpress插件

function manufacturer_rewrite_add_var($vars) { 
    $vars[] = 'manufacturer'; 
    return $vars; 
} 
add_filter('query_vars', 'manufacturer_rewrite_add_var'); 

function add_manufacturer_rewrite_rule() { 
    add_rewrite_tag('%manufacturer%', '([^&]+)'); 
    add_rewrite_rule(
    '^manufacturer/([^/]*)/?', 
    'index.php?manufacturer=$matches[1]', 
    'top' 
); 
} 
add_action('init', 'add_manufacturer_rewrite_rule'); 

當我激活插件,進入localhost/manufacturer/audi我希望重定向到以下幾點:localhost/index.php?manufacturer=audi。相反,它保持在同一頁面上。我在這裏錯過了什麼?

+0

確保您沒有在固定鏈接中使用**「發佈名稱」設置**,並且您已重新保存它們,因爲代碼發生變化以刷新重寫規則。 – FluffyKitten

回答

0

documentation

重要:不要忘了刷新和修改規則後,重新改寫規則數據庫。從WordPress管理屏幕,選擇設置 - >永久鏈接,只需點擊保存更改,不做任何更改。

您可以嘗試使用flush_rewrite_rules

沖洗重寫規則是昂貴的操作,有教程以及建議執行它的「初始化」鉤例子。這是不好的做法。它應該在'關機'鉤子上執行,或者在插件/主題(de)激活上執行。

所以,你可以使用的功能register_activation_hookregister_desactivation_hook刷新它的插件激活和失活。

0

不,你沒有得到「重定向」。這是一個重寫規則,而不是重定向規則。 Wordpress從您的網址中獲取匹配的正則表達式,並在內部重寫爲「製造商」查詢變量。然後,您可以通過get_query_var()將「製造商」的價值展示給您的腳本。