Custom Post Type rewrite

时间:2017-09-26 作者:lukgoh

我正在尝试通过url链接到自定义帖子类型。所以我有CPT“论坛”(example.com/forums)和CPT“主题”(example.com/topics)

我正在尝试实现两个组合的url(对于CPT“主题”),并在两者之间添加元数据(例如:com/forums/forumname/topic/topicname),这可能吗?

    //register post type
    register_post_type( \'forums\', array(
    \'labels\' => $labels,
    \'has_archive\' => true,
    \'public\' => true,
    \'supports\' => array( \'title\', \'editor\', \'excerpt\', \'thumbnail\',\'page-attributes\' ),
    \'taxonomies\' => array(  ),  
    \'exclude_from_search\' => false,
    \'capability_type\' => \'page\',
    \'rewrite\' => array( \'slug\' => \'forums\' ),
    )
);
它与正确的url(example.com/forums/)配合使用。

//register post type
register_post_type( \'topics\', array(
    \'labels\' => $labels,
    \'has_archive\' => true,
    \'public\' => true,
    \'supports\' => array( \'title\', \'editor\', \'excerpt\', \'thumbnail\',\'page-attributes\' ),
    \'taxonomies\' => array( \'post_tag\'), 
    \'exclude_from_search\' => false,
    \'capability_type\' => \'post\',
    \'rewrite\' => array( 
        \'slug\' => \'forums/topic\',
        \'with_front\' => true
         ),
    )
);
这打破了CPT“主题”的永久链接。我不太了解URL重写,需要有人带我了解一下,或者至少给我指出正确的方向。我一直在阅读指南,但我只是变得更加困惑。

1 个回复
SO网友:Rarst

要理解重写规则的关键是,它们只有在完全明确的情况下才能工作。

你脑子里有个想法什么example.com/forums/forumname/topic/topicname 这对你来说很有意义。当WP得到这个URL时,它没有任何远程线索,它只是一堆单词。然后,它去重写规则,并寻找将其“翻译”到它所理解的上下文(查询变量)的规则。

所以,只要URL可以用一条以上的规则来解释,它就会崩溃。对于本机帖子类型和分类法,都经过精心设计,以避免规则重叠。例如类别必须具有/category/ 等等

有了自定义内容,您可以更自由地定义事物,也可以更自由地通过创建重叠规则来打破事物。

因此,一般来说,您应该尽可能避免Slug中的任何重叠。

如果你确实需要重叠,你的生活就会变得更加艰难。这仍然是可行的,但您必须深入地调试正在创建的规则。很可能您还需要从头开始为您的情况构建更严格的重写规则,因为使用注册函数的“简单”方法可能无法解决这一问题。

结束

相关推荐