不同自定义帖子类型的唯一默认帖子模板

时间:2019-03-11 21:00:31

标签: wordpress custom-post-type

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

public post(path, params): Promise<any> {
  return this.http
    .post(this.apiUrl + path, params)
    .toPromise()
    .then(r => r.json())
    .catch(e => throw new Error(e.json()));
}

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

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

提前感谢您的宝贵时间。

1 个答案:

答案 0 :(得分:1)

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

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

模板层次结构

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

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

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

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

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

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

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

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

参考