仅限默认的不同自定义帖子类型的帖子模板

问题描述 投票:0回答:1

在我目前的项目中,我有一些CPT(~9),我希望他们中的一部分使用相同的帖子模板,而另一部分使用另一个。直到那里,这段代码还可以。

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

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

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

在此先感谢您的时间。

wordpress custom-post-type
1个回答
1
投票

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

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

模板层次结构

如果您正确命名模板文件,WordPress知道默认情况下应该为给定的自定义帖子类型使用该模板。

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

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

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

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

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

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

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

参考

© www.soinside.com 2019 - 2024. All rights reserved.