自定义帖子类型的WordPress页面模板

时间:2015-10-12 16:05:50

标签: wordpress wordpress-theming custom-post-type

我有一个自定义帖子类型,例如“商店页面”,这是默认的Wordpress“页面”帖子类型的几乎相同的副本。

与“页面”帖子类型一样,我想创建页面模板(不是后期类型模板),并且能够从页面编辑器中“页面属性”框中的“模板”下拉列表中选择它们

我创建了几个模板,但没有出现下拉菜单;我假设这是因为自定义帖子类型不支持此。

有没有办法可以为自定义帖子类型创建页面模板而不使用“single-{post-type-name} .php”并且有十几个查询来加载不同的模板文件?

我仔细检查了模板的注释是否正确,因为它们在我创建新页面时显示(帖子类型,“页面”)。

非常感谢帮助。

2 个答案:

答案 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轻松完成此操作,这是一个快速指南。

安装插件后,您可以访问自定义字段部分,如果您打开它并单击添加新部分,它将带您进入字段编辑器。将它命名为您想要的任何名称,它只是用于管理显示。

在字段类型上选择“选择”,这将允许您在后端构建一个选择框,请记住稍后在代码中需要的“字段名称”的值。

Create new field group

向下滚动,您可以按以下格式添加选择框的值:"key value : Textual label"现在假设您需要2个模板,一个用于音频帖子,另一个用于视频帖子。

Key values for the select

如果继续向下滚动,您可以看到此字段组的显示规则,现在默认情况下您将有“发布”和“页面”,当您添加不同的内容类型时,您将在此处选择其他内容类型,继续选择你的。

Post rule selection

而且,ta-da。如果您进入自定义内容类型编辑窗口,您会在此处找到新的新选择框等待您。 Select box on the post window

现在代码集成非常简单,只需转到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的格式,当然,为了您的方便,您可以重新阅读。