我们有一个定制类型的music。
/music/
/music/post-name/此外,我们还有一个类似标签的分类法genres。其网址是:
/music-genres/genre-name/我想让网址像:
/music/
/music/post-name/
/music/genres/
/music/genres/genre-name//music-genres/应由/music/genres/取代。
最后,我们应该得到url结构,如:
/post-type/taxonomy/term/
/post-type/postname/我该怎么做?
发布于 2011-04-07 17:13:22
是的,这是可能的,因为您的genres结构是/music/genres/[genre-name]。如果是/music/[genre-name],就会很复杂,因为它会与/music/[post-name]发生冲突。
你只要记住命令就行了。重写规则应该从最特定的到最不特定的顺序。如果您首先注册post类型,然后注册分类法,那么post类型规则将是第一位的。问题是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' );
}您可以验证这一点,并在我的重写分析器插件中使用您的规则。
发布于 2011-03-31 13:46:17
也许你可以在这篇文章上找到一些信息:自定义post类型、分类和permalinks
发布于 2011-04-04 20:10:55
WordPress不支持按您需要的程度重载permalink结构。您可以编写您自己的预重写过滤器,将您想要的URL转换为WP_Rewrite可以识别的URL,然后编写过滤器将WordPress生成的链接转换为您自己的样式。
要理解这一点,请研究WP_Rewrite::generate_rewrite_rules和WP::parse_request,它们通常被认为是“巫毒”。
https://wordpress.stackexchange.com/questions/13608
复制相似问题