2016-09-30 119 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”中。 –