我有一个自定义帖子类型,例如“商店页面”,这是默认的Wordpress“页面”帖子类型的几乎相同的副本。
与“页面”帖子类型一样,我想创建页面模板(不是后期类型模板),并且能够从页面编辑器中“页面属性”框中的“模板”下拉列表中选择它们
我创建了几个模板,但没有出现下拉菜单;我假设这是因为自定义帖子类型不支持此。
有没有办法可以为自定义帖子类型创建页面模板而不使用“single-{post-type-name} .php”并且有十几个查询来加载不同的模板文件?
我仔细检查了模板的注释是否正确,因为它们在我创建新页面时显示(帖子类型,“页面”)。
非常感谢帮助。
答案 0 :(得分:1)
从4.7开始,您可以使用此处描述的新功能https://make.wordpress.org/core/2016/11/03/post-type-templates-in-4-7/
<?php
/*
Template Name: Full-width layout
Template Post Type: post, page, product
*/
// … your code here
答案 1 :(得分:0)
如果我理解正确,您需要自定义帖子类型的“选择模板”下拉列表。 您可以通过Advanced Custom Fields轻松完成此操作,这是一个快速指南。
安装插件后,您可以访问自定义字段部分,如果您打开它并单击添加新部分,它将带您进入字段编辑器。将它命名为您想要的任何名称,它只是用于管理显示。
在字段类型上选择“选择”,这将允许您在后端构建一个选择框,请记住稍后在代码中需要的“字段名称”的值。
向下滚动,您可以按以下格式添加选择框的值:"key value : Textual label"
现在假设您需要2个模板,一个用于音频帖子,另一个用于视频帖子。
如果继续向下滚动,您可以看到此字段组的显示规则,现在默认情况下您将有“发布”和“页面”,当您添加不同的内容类型时,您将在此处选择其他内容类型,继续选择你的。
而且,ta-da。如果您进入自定义内容类型编辑窗口,您会在此处找到新的新选择框等待您。
现在代码集成非常简单,只需转到single-{post-type-name}.php
模板并将自定义字段数据拉入循环。然后,您可以使用此get_template_part()
来提取自定义模板。
<?php $template_type = get_field('template'); // This must match with the field name value ?>
<?php if (isset($template_type) && !empty($template_type)): ?>
<?php get_template_part( 'store', $template_type ); ?>
<?php else: ?>
// You should have a fallback for the all the existing posts without template set or if you create a new post without a template.
<?php endif; ?>
在这个具体示例中,提取的模板文件将采用store-{key-value-of-the-selectbox}.php
的格式,当然,为了您的方便,您可以重新阅读。