【问题标题】:Only default Post Template for different Custom Post Types仅适用于不同自定义帖子类型的默认帖子模板
【发布时间】:2019-03-12 05:45:29
【问题描述】:

在我目前的项目中,我有一些 CPT (~9),我希望其中一部分使用相同的帖子模板,而另一部分使用另一个模板。在那之前,这段代码没问题。

<?php 
  /* Template Name: 'Template 1'
   * Template Post Type: cpt1, cpt2, cpt3 */ 
?>

我的问题是在创建新帖子时。我每次都要选择模板...(> screenshot) 对我的客户来说不是很方便。重复处理。

是否可以强制使用默认模板?有任何想法吗 ?

提前感谢您的宝贵时间。

【问题讨论】:

    标签: wordpress custom-post-type


    【解决方案1】:

    您可以通过为您的 CPT 设置符合 WP 模板层次结构的自定义模板并从这些模板文件中访问通用模板来实现您的需要。

    具体来说,对于您希望拥有通用模板的自定义帖子类型,您可以使用这些文件中的get_template_part() 函数来访问通用模板结构。

    模板层次结构

    如果您适当地命名您的模板文件,WordPress 知道该模板应该默认用于给定的自定义帖子类型。

    例如,如果您将模板文件命名为 single-product.php,则此模板将用于使用 slug product 注册的自定义帖子类型。

    模板是分层选择的,因此如果您需要,您甚至可以让 WordPress 为特定的 slug 显示自定义模板。自定义帖子类型的层次结构是:

    1. single-{post-type}-{slug}.php 如果您有自定义帖子类型 {post-type} 和 slug {slug},将使用此模板。否则...
    2. single-{post-type}.php 如果您有自定义帖子类型 {post-type},将使用此模板。
    3. single.php 否则 WP 回退到 single.php
    4. singular.php - 如果没有 single.php 则使用
    5. 最后,如果没有其他选项,WP 使用index.php

    在您的情况下,您可以为每个自定义帖子类型单独设置各种模板,但对于应该相同的模板,请从这些模板中引用您的常用模板部分。 p>

    例如,如果您有自定义帖子类型 cpt1cpt2 应该访问同一个模板,请创建两个模板(single-cpt1.phpsingle-cpt2.php)并将以下代码添加到它们:

    <?php get_template_part('templates/content', 'common-cpt'); ?>
    

    然后您可以将通用模板数据添加到名为templates/content-common-cpt.php 的模板文件中,您的问题应该得到解决。

    参考文献

    【讨论】:

    • 是的,就是这样。我认为只需使用帖子模板就可以避免单{post-type}.php。但我只需要将它们结合起来。感谢您的回复!
    • 很高兴为您提供帮助 - 您也可以坚持使用 single.php 并使用 is_singular(['cpt1', 'cpt2']) 有条件地包含模板部分。如果您对逻辑模板重用感兴趣,我建议您查看 Sage 入门主题:roots.io/sage
    猜你喜欢
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    相关资源
    最近更新 更多