2016-09-30 118 views
0

我正在爲我的自定義項目添加rewrite_rules。WordPress add_rewrite_rule 404錯誤

我可以讓他們工作到一定程度,但有一定的困難。

這是我已經嘗試了到目前爲止

public function add_query_vars($vars) { 
    $vars[] = 'gallery'; 
    $vars[] = 'project'; 
    $vars[] = 'palbum'; 
    return $vars; 
} 
public function add_endpoint() { 
    add_rewrite_rule('^gallery/([^/]*)/([^/]*)?','index.php?gallery=true&project=$matches[1]&palbum=$matches[2]','top'); 
} 

以下項目父和palbum都是它的孩子。

這似乎在mysite.com/gallery/my-project-name/my-album-name 正常工作(這些頁面顯示單曲專輯)

但它給了我404錯誤在mysite.com/gallery/my-project-name (這些頁面顯示所有專輯該項目是父)

任何線索爲什麼?

回答

0

根據您的重寫規則,既用於項目和palbum的部分,需要爲了重寫規則適用。如果修改規則稍稍,它將匹配你在找什麼:

public function add_endpoint() { 
    /** 
    * 
    * Matches: 
    * http://example.com/gallery/my-project-name/my-album-name/ 
    * http://example.com/gallery/my-project-name/my-album-name 
    * http://example.com/gallery/my-project-name/ 
    * http://example.com/gallery/my-project-name 
    */ 
    add_rewrite_rule('^gallery/([^/]+)/?(.*?)/?$','index.php?gallery=true&project=$matches[1]&palbum=$matches[2]','top'); 
} 

創建了一個測試,以對您想檢查任何其他迭代運行 - https://www.regex101.com/r/f54odP/1

+0

謝謝,這工作。任何想法如何匹配這些? 通過'http:// example.com /畫廊/我的項目名稱/我的專輯父母/我的專輯,children' 專輯父母可以是任何數字,我認爲。即 'http:// example.com/gallery/my-project-name/my-album-parent/my-album-sub-parent/my-album-sub-sub-parent/my-album-chidren' –

+0

我的專輯 - 父母/我 - 專輯 - 子 - 父母/我 - 專輯 - 子 - 子 - 專輯/我的專輯 - 孩子'應存儲在'palbum'和'my-project-名稱'存儲在'項目'或是否需要另一個變量? – bswatson

+0

嗨,謝謝你的回覆。它們需要以相同的方式存儲在相同的「palbum」和「project」中。 –