Custom permalinks

时间:2011-03-31 作者:ilovewordpress

我们有一个自定义类型music.

/music/
/music/post-name/
此外,我们还有一个类似标签的分类法genres. 其URL为:

/music-genres/genre-name/
我尝试创建如下URL:

/music/
/music/post-name/
/music/genres/
/music/genres/genre-name/
/music-genres/ 应替换为/music/genres/.

最后,我们应该得到如下url结构:

/post-type/taxonomy/term/
/post-type/postname/
我该怎么做?

3 个回复
最合适的回答,由SO网友:Jan Fabry 整理而成

是的,这是可能的,因为genres 结构为/music/genres/[genre-name]. 如果是的话/music/[genre-name] 这会很复杂,因为它会与/music/[post-name].

你只要记住顺序就行了。重写规则应按从最具体到最不具体的顺序排列。如果先注册帖子类型,然后注册分类法,那么帖子类型规则将排在第一位。问题是,post类型规则包含一个非常通用的规则来匹配附件,这会干扰我们的分类术语。但是,如果您先注册分类法,然后注册post类型,那么它就会起作用。

令人困惑的是,您通常会传递将使用您正在注册的分类法的post类型,但您可以传递空数组,稍后再进行连接。

add_action( \'init\', \'wpse13608_init\' );
function wpse13608_init()
{
    register_taxonomy(
        \'music-genre\',
        array(),
        array(
            \'rewrite\' => array(
                \'slug\' => \'music/genre\'
            ),
        )
    );
    register_post_type( \'music\' );
    register_taxonomy_for_object_type( \'music-genre\', \'music\' );
}
您可以验证这一点,并使用myRewrite analyzer plugin.

SO网友:Roman

也许你可以在这篇文章中找到一些信息:Custom post types, taxonomies, and permalinks

SO网友:Andy

WordPress不支持将永久链接结构重载到您想要的程度。您可以编写自己的重写前过滤器,将所需的URL转换为WP\\U rewrite可以识别的URL,然后编写过滤器,将WordPress生成的链接转换为您自己的样式。

要了解这一点,请学习WP_Rewrite::generate_rewrite_rulesWP::parse_request, 通常被认为是“巫毒”。

结束

相关推荐

curl problem or permalinks

我刚刚配置了我的VPS,我使用的是Centos,一切都很好,但如果我将永久链接设置为自定义结构,然后接受主页,没有帖子出现,它会显示404页,我想这是因为我没有启用curl,但我不知道我的php在哪里。我的centos中的ini文件?好的,我的卷曲被启用了,我检查过了phpinfo(); 这里是URLhttp://74.117.158.182/info.php但如果我在我的wordpress中设置了永久链接,那么接受主页,所有都会给我404页,你可以在这个URL上查看http://mbas.co.in如果