我已经注册了一个新的帖子类型,并制作了一个自定义模板来显示它。根据WP对CPT模板的最新支持,要使其对任何给定的CPT可用,只需将此标头放在模板文件上:
/**
* Template Name: Single Book
* Template Post Type: book
*/
然后,按照模板层次结构,我将我的模板命名为
single-book.php
. 好了,现在我有了这个模板,可以用于“book”帖子类型。它起作用了。凉的
然而,出于某种原因,我仍然需要manually select it within the post attribute section every time I create a new book 作为default selection is the standard template for posts. (当按照上述方式命名后,默认值应该是我的自定义模板,对吗?除非我遗漏了什么…)
因此,如果我/用户有任何机会忘记更改,CPT显然不会在前端正确显示,因为它没有使用为其制作的模板。
我必须防止这种情况发生,因为我将与大量CPT合作,所以在注册CPT时,我需要能够从两种方法中进行选择:
1-Determining which template is selected by default on the post attribute section. (适用于可根据情况使用一系列自定义模板的CPT,但要确保默认选择是适当的,而不是任何其他标准模板);
2-Making the post attribute section DISAPPEAR for CPTs that should ONLY use a specific custom template. (同时确保所用的是这个)。
我做了大量的研究,根本找不到关于如何进行这项工作的任何信息。
然而,我怀疑这不仅可以轻松地实现,而且在注册post类型数组时,它还与post类型数组中的某些参数有关。
我不确定,但可能大致是这样的:
add_theme_support(\'custom-post\', array (
\'book\'=> array (
\'singular\' => ... ,
\'plural\' => ... ,
\'supports\' => array(...),
\'some-parameter-to-set-default-template\' => ... ,
\'some-parameter-to-disable-post-attribute-selection\' => ...
),
) );
有人能帮忙吗?
最合适的回答,由SO网友:Diogo 整理而成
幸亏Milo 我设法解决了我的两个需要。他的评论回答了其中一个问题,为我找到另一个问题开辟了道路。
所以,如果我只想ONE 任何给定CPT的自定义模板,都是模板层次结构。不需要像我那样在标题中插入注释。就我而言,CPT注册为book
, 所以模板文件被命名为single-book.php
.
现在,在创建一本新书时,将没有post属性部分,它将使用正确的模板。(这是意料之中的……标题中的评论部分把事情搞砸了)。
但是,如果我想more custom templates for the same CPT 这时,标题中的评论部分开始发挥作用。
然后我可以命名new 模板文件随便我想要什么like-really-whatever-I-want.php
并按照以下结构将其定位到适当的职位类型:
/**
* Template Name: Whatever you wanna call the template
* Template Post Type: book
*/
这样做将在添加新书时调出post属性部分。默认模板仍然是之前按照模板层次结构创建的模板,但现在将有第二个模板可供选择。
我可以冲洗并重复此过程,以获得任意给定CPT所需的任意多个模板。
如果我想让这些额外模板中的一个被多个CPT使用,我可以通过简单地将其他帖子类型名称添加到我开始使用的那一个旁边来实现。像这样:
/**
* Template Name: Whatever you wanna call the template
* Template Post Type: book, event, game, movie
*/
结果证明一切都非常非常简单。然而,如此强大。希望这可以帮助其他人。