自定义帖子类型url重写(与页面url冲突)

时间:2016-03-23 作者:Jason Marsh

我有一个网站,有许多不同的自定义类型的职位。我想将页面用作这些自定义类型帖子的父模板(列出所有特定的自定义帖子)

例如,我有一个名为“博客”的页面,它有URL www.mysite。com/blogIt将列出名为“blog”的自定义帖子。以下是自定义post类型实现:

$args = array (
            \'label\' => \'Blog Posts\',
            \'singular_label\' => \'Blog Post\',
            \'public\' => true,
            \'publicly_queryable\' => true,
            \'show_ui\' => true,
            \'capability_type\' => \'post\',
            \'hierarchical\' => false,
            \'rewrite\' => array(\'slug\' => \'blog\'),
            \'query_var\' => true,
            \'menu_icon\' => null,
            \'menu_position\' => 2,
            \'supports\' => array(\'title\', \'editor\', \'author\', \'thumbnail\', \'excerpt\', \'trackbacks\', \'post-formats\', \'custom-fields\', \'editors\')
    );

    register_post_type( \'blog\' , $args );
这很有效,我可以单击并查看每个带有URL的博客帖子www.mysite.com/blog/hi-this-is-a-post

但是,分页已断开。www.mysite.com/blog/page/2/ 返回404。我通过在自定义帖子的URL中添加/post/找到了一个解决方法,如

\'rewrite\' => array(\'slug\' => \'blog/post\'),
这不会破坏分页或帖子链接,但这不是我们想要的。我们想要一个如下的URL

www.mysite.com/blog/each-post
有人能给我线索吗?谢谢

1 个回复
SO网友:Jason Marsh

多亏了@Milo我才解决了这个问题

1) 删除任何可能保留的内容/blog/ url。在我的例子中,这是一个带有URL的单一页面/blog/.

2) 修改自定义post类型声明,使其具有\'has_archive\' => true

3) 创建archive-blog.php 并将代码移到此处。(您可以将全局查询对象用于此自定义帖子类型)

4) 将permalink设置回“普通到自定义”(这实际上会刷新您的URL permalink),从而刷新permalink几次。

5) 有效。