2012-08-08 211 views
0

我想在wordpress中重寫一個url,以便我可以根據傳遞的變量提供動態內容。我有一個插件需要傳遞給它的變量數據。目前,我有:WordPress的:Url重寫

http://xyzsite.com/page/?var1=something 

這個工作正常,並通過在$ _GET變種。因此,我的下一個步驟是清理變量,以便它看起來像

http://xyzsite.com/page/something 

我已經做了一些谷歌搜索,並提出一些防空火炮的網站,看上去很有前途,但我不能讓任何人的工作。從我讀過,我需要使用

add_rewrite_tag and add_rewrite_rule 

通過我已經加入這個我的functions.php頁面的文章看完後:

add_rewrite_tag('%var1%','([^&]+)'); 
add_rewrite_rule('^page/([^&]+)/?','index.php?p=1141&var1=$matches[1]','top'); 

,當我瀏覽到http://xyzsite.com/page/something的頁面,我收到了404錯誤。當我導航到http://xyzsite.com/page/?var1=something它仍然工作正常。所以看起來好像我的重寫沒有註冊或工作正常。

有人可以幫助我實現上述重寫。僅供參考,我的永久鏈接設置設置爲張貼名稱,如果這很重要。謝謝。

+0

你有沒有檢查你的'.htaccess'文件?也許你沒有'.htaccess'文件或被忽略。如果我是你,我會嘗試首先執行正常的URL重寫(使用固定鏈接設置),如果這個工作正常,那麼只需從'add_rewrite_tag()'和'add_rewrite_rule()'開始。 – nalply 2012-08-08 19:24:58

回答

1

我可不是一個正則表達式PRO,̶但我懷疑一個問題,在你重寫規則:̶

a̶d̶d̶_̶r̶e̶w̶r̶i̶t̶e̶_̶r̶u̶l̶e̶(̶'̶^̶p̶a̶g̶e̶/̶(̶[̶^̶&̶]̶+̶)̶/̶?̶'̶,̶'̶i̶n̶d̶e̶x̶.̶p̶h̶p̶?̶p̶=̶1̶1̶4̶1̶&̶v̶a̶r̶1̶=̶$̶m̶a̶t̶c̶h̶e̶s̶[̶1̶]̶'̶,̶'̶t̶o̶p̶'̶)̶;̶ 

̶ 請注意̶/̶̶......你加在̶e̶n̶d̶.̶因此你應該訪問您的網頁以http:̶/̶/̶x̶y̶z̶s̶i̶t̶e̶.̶c̶o̶m̶/頁/某事/̶̶而不是̶x̶y̶z̶s̶i̶t̶e̶.̶c̶o̶m̶/頁/某事。你嘗試是否可行?̶

上面的撫摸了文本是錯誤的,因爲古斯塔沃Straube在評論中指出。請忽略該建議的解決方案。

我唯一的最後一個建議是嘗試你最後add_rewrite_rule後加入flush_rules();,爲http://codex.wordpress.org/Rewrite_API/flush_rules規定。

請注意,您應該使用get_query_var('var_name')訪問您的查詢變量,而不是直接嘗試訪問$_GET

+0

我們可以在哪裏添加代碼..請告訴我 – Manju 2013-09-28 16:26:25

+0

正則表達式末尾的'?'表示最後一個斜槓('/')是可選的。所以它可以同時處理'page/something /'和'page/something'。 – 2015-09-15 16:09:40

+0

哎唷!你說得對,@GustavoStraube!這證實了我不是任何正則表達式專家,儘管至少我建議xD。我想現在該編輯了;) – Pere 2015-09-20 21:21:34