Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 仅适用于不同自定义帖子类型的默认帖子模板_Wordpress_Custom Post Type - Fatal编程技术网

Wordpress 仅适用于不同自定义帖子类型的默认帖子模板

Wordpress 仅适用于不同自定义帖子类型的默认帖子模板,wordpress,custom-post-type,Wordpress,Custom Post Type,在我当前的项目中,我有一些CPT(~9),我希望其中一部分使用相同的帖子模板,另一部分使用另一个模板。在此之前,这段代码没有问题 <?php /* Template Name: 'Template 1' * Template Post Type: cpt1, cpt2, cpt3 */ ?> 我的问题是当我创建一个新帖子时。我每次都要选择模板…(>)这对我的客户来说不是很方便。重复的操作 是否可以强制使用默认模板?有什么想法吗 提前感谢您抽出时间 通过为您的CPT

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

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

我的问题是当我创建一个新帖子时。我每次都要选择模板…(>)这对我的客户来说不是很方便。重复的操作

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


提前感谢您抽出时间

通过为您的CPT设置符合WP模板层次结构的自定义模板,并从这些模板文件中访问公共模板,您可以实现所需的功能

具体来说,对于希望具有公共模板的自定义帖子类型,可以在这些文件中使用
get\u template\u part()
函数来访问公共模板结构

模板层次结构 如果您对模板文件进行了适当的命名,WordPress知道默认情况下该模板应用于给定的自定义帖子类型

例如,如果将模板文件命名为
single product.php
,则此模板将用于向slug
产品注册的自定义post类型

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

  • single-{post type}-{slug}.php
    。否则
  • single-{post type}.php
  • single.php
    否则,WP将返回single.php
  • singular.php
    -如果没有
    singular.php
  • 最后,如果没有其他选项,WP将使用
    index.php
  • 在您的情况下,您可以为每个自定义帖子类型分别设置各种模板,但对于应该相同的模板,请从这些模板中引用常用模板部分

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

    <?php get_template_part('templates/content', 'common-cpt'); ?>
    
    
    
    然后,您可以将公共模板数据添加到名为
    templates/content common cpt.php
    的模板文件中,您的问题应该得到解决

    工具书类

    是的,就是这样。我认为只使用post模板就可以避免使用单个-{post type}.php。但我必须把它们结合起来。谢谢你的回复!很高兴提供帮助-您也可以坚持使用single.php,并使用
    is_singular(['cpt1','cpt2'])
    有条件地包含模板部分。如果您对逻辑模板重用感兴趣,我建议您看看Sage starter主题: