【问题标题】:WordPress Page Templates for Custom Post Type自定义帖子类型的 WordPress 页面模板
【发布时间】:2015-10-12 16:05:49
【问题描述】:

我有一个自定义帖子类型,例如“商店页面”,它与默认的 Wordpress“页面”帖子类型几乎完全相同。

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

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

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

我已经仔细检查了模板的 cmets 是否正确,因为它们在我创建新页面时出现(帖子类型,“页面”)。

我们将不胜感激。

【问题讨论】:

  • 您可以创建一个元框,在其中您可以使用get_page_templates() 列出所有页面模板,但是让它们应用于当前页面将是一件棘手的事情。我猜它会是load_template() 或类似的东西......

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


【解决方案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

【讨论】:

    【解决方案2】:

    如果我理解正确,您需要为您的自定义帖子类型选择模板下拉菜单。 您可以通过Advanced Custom Fields 轻松完成此操作,这里有一个快速指南如何通过。

    安装插件后,您可以访问“自定义字段”部分,如果您打开它并单击“添加新”,它会将您带到字段编辑器。随便起个名字,只是为了管理显示。

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

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

    如果你继续向下滚动你可以看到这个字段组的显示规则,现在你将默认有“post”和“page”,当你添加不同的内容类型时,你将在此处选择其他内容类型,去挑选你的吧。

    还有,达达。如果您继续自定义内容类型编辑窗口,您会发现新的新鲜选择框在这里等着您。

    现在的代码集成非常简单,只需进入您的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 的格式,当然您可以阅读它以方便您使用。

    【讨论】:

      猜你喜欢
      • 2016-11-07
      • 2013-12-06
      • 2014-01-15
      • 2012-07-05
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多