我正在开发一个需要自定义帖子类型的项目。 我还需要一个适用于所有类型的帖子/页面类型的面包屑。
问题是我还没有想出一个很好的方法来实现一个自定义帖子类型,它有一个“起始页”,然后是一些子页面。
在我的世界里,我想建立一个链接到模板的常规页面(我们称之为“汽车”)。模板应该以某种方式连接到自定义帖子类型,所以当我在自定义帖子类型中创建帖子(让我们称之为“宝马”)并转到该帖子时,我希望网站像http://test.com/cars/BMW。
这里的另一个问题是,当我在页面http://test.com/cars/bmw上运行一个函数来查看我的页面祖先宝马页面的内容时,我得到null,因为Wordpress将宝马页面识别为帖子并且汽车作为一个页面。
我不知道你们是否理解我在这里的意思,但是你用自定义帖子类型实现完整链条的最佳途径是什么,这样我就可以访问或识别链中的所有页面/帖子。此外,这主要是因为面包屑工作,我想在这个链中的标准第一页“汽车”,所以人们可以在网站上出现的标准WYSIWYG中写出内容。
谢谢大家。
答案 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;永久链接页面并单击“保存”以重建缓存。