在我目前的项目中,我有一些CPT(~9),我希望他们中的一部分使用相同的帖子模板,而另一部分使用另一个。直到那里,这段代码还可以。
<?php
/* Template Name: 'Template 1'
* Template Post Type: cpt1, cpt2, cpt3 */
?>
我的问题是我正在创建一个新帖子。我每次都要选择模板...(> screenshot)对我的客户来说不是很方便。重复处理。
是否可以强制使用默认模板?有任何想法吗 ?
在此先感谢您的时间。
您可以通过为符合WP模板层次结构的CPT设置自定义模板,以及从这些模板文件中访问公共模板来实现所需。
具体来说,对于您希望拥有通用模板的自定义帖子类型,您可以使用这些文件中的get_template_part()
函数来访问公共模板结构。
如果您正确命名模板文件,WordPress知道默认情况下应该为给定的自定义帖子类型使用该模板。
例如,如果您将模板文件命名为single-product.php
,则此模板将用于使用slug product
注册的自定义帖子类型。
模板是按层次结构选择的,因此如果需要,您甚至可以让WordPress显示特定slug的自定义模板。自定义帖子类型的层次结构是:
single-{post-type}-{slug}.php
如果您有自定义帖子类型{post-type} with slug {slug},将使用此模板。除此以外...single-{post-type}.php
如果您有自定义帖子类型{post-type},将使用此模板。single.php
否则,WP会回到single.phpsingular.php
- 如果没有single.php
则使用index.php
。在您的情况下,您可以为每个自定义帖子类型单独设置各种模板,但对于应该相同的模板,请从这些模板中引用常用模板部件。
例如,如果您有自定义帖子类型cpt1
和cpt2
应该访问相同的模板,请创建两个模板(single-cpt1.php
和single-cpt2.php
)并将以下代码添加到它们:
<?php get_template_part('templates/content', 'common-cpt'); ?>
然后,您可以将常用模板数据添加到名为templates/content-common-cpt.php
的模板文件中,您的问题应该得到解决。