首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义permalinks

自定义permalinks
EN

WordPress Development用户
提问于 2011-03-31 10:37:32
回答 3查看 502关注 0票数 3

我们有一个定制类型的music

代码语言:javascript
复制
/music/
/music/post-name/

此外,我们还有一个类似标签的分类法genres。其网址是:

代码语言:javascript
复制
/music-genres/genre-name/

我想让网址像:

代码语言:javascript
复制
/music/
/music/post-name/
/music/genres/
/music/genres/genre-name/

/music-genres/应由/music/genres/取代。

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

代码语言:javascript
复制
/post-type/taxonomy/term/
/post-type/postname/

我该怎么做?

EN

回答 3

WordPress Development用户

回答已采纳

发布于 2011-04-07 17:13:22

是的,这是可能的,因为您的genres结构是/music/genres/[genre-name]。如果是/music/[genre-name],就会很复杂,因为它会与/music/[post-name]发生冲突。

你只要记住命令就行了。重写规则应该从最特定的到最不特定的顺序。如果您首先注册post类型,然后注册分类法,那么post类型规则将是第一位的。问题是post类型规则包含一个与附件匹配的非常通用的规则,这将与我们的分类法术语混淆。但是,如果您首先注册分类法,然后注册post类型,它就会起作用。

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

代码语言:javascript
复制
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' );
}

您可以验证这一点,并在我的重写分析器插件中使用您的规则。

票数 3
EN

WordPress Development用户

发布于 2011-03-31 13:46:17

也许你可以在这篇文章上找到一些信息:自定义post类型、分类和permalinks

票数 1
EN

WordPress Development用户

发布于 2011-04-04 20:10:55

WordPress不支持按您需要的程度重载permalink结构。您可以编写您自己的预重写过滤器,将您想要的URL转换为WP_Rewrite可以识别的URL,然后编写过滤器将WordPress生成的链接转换为您自己的样式。

要理解这一点,请研究WP_Rewrite::generate_rewrite_rulesWP::parse_request,它们通常被认为是“巫毒”。

票数 1
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/13608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档