如何使用模板创建自定义帖子类型

时间:2017-09-21 08:03:34

标签: php wordpress custom-wordpress-pages

我正在开发一个需要自定义帖子类型的项目。 我还需要一个适用于所有类型的帖子/页面类型的面包屑。

问题是我还没有想出一个很好的方法来实现一个自定义帖子类型,它有一个“起始页”,然后是一些子页面。

在我的世界里,我想建立一个链接到模板的常规页面(我们称之为“汽车”)。模板应该以某种方式连接到自定义帖子类型,所以当我在自定义帖子类型中创建帖子(让我们称之为“宝马”)并转到该帖子时,我希望网站像http://test.com/cars/BMW

这里的另一个问题是,当我在页面http://test.com/cars/bmw上运行一个函数来查看我的页面祖先宝马页面的内容时,我得到null,因为Wordpress将宝马页面识别为帖子并且汽车作为一个页面。

我不知道你们是否理解我在这里的意思,但是你用自定义帖子类型实现完整链条的最佳途径是什么,这样我就可以访问或识别链中的所有页面/帖子。此外,这主要是因为面包屑工作,我想在这个链中的标准第一页“汽车”,所以人们可以在网站上出现的标准WYSIWYG中写出内容。

谢谢大家。

1 个答案:

答案 0 :(得分:0)

<强>更新

当您注册帖子类型时,如果slug设置为true,则指定将用于您的网址的has_archive。在这种情况下,您可以使用archive-{slug}.php文件设置存档样式。

如果您想要使用自定义网页,has_archive必须是false,但是没有可靠的方法来识别单个CPT帖子中的“假父母”。

最佳选择是在自定义设置页面上引入配置设置,允许用户选择用于CPT存档的页面。在breadcrumbs生成中,您将使用此配置值而不是硬编码或URL字符串操作等。

您的CPT:

register_post_type('cars', [
    'labels'              => [
        'name'            => 'Cars',
        'singular_name'   => 'Car'
    ],
    'supports'            => ['title', 'editor', 'author', 'thumbnail', 'comments', 'revisions'],
    'taxonomies'          => ['category', 'post_tag'],
    'public'              => true,
    'exclude_from_search' => false,
    'has_archive'         => false,
    'rewrite'             => ['slug' => 'cars']
]);

更改影响重写规则的设置后,请转到信息中心&gt;设置&gt;永久链接页面并单击“保存”以重建缓存。