首页 文章

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

提问于
浏览
3

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

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

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

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

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

非常感谢帮助 .

2 回答

  • 0

    从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

    如果我理解正确,您需要自定义帖子类型的“选择模板”下拉列表 . 您可以通过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 的格式,当然您可以为此提供最佳的便利性 .

相关问题