如何使自定义页面模板对子主题起作用?

时间:2019-02-26 作者:Victor Oliveira

我创建了一个名为concert.php 在下面page-templates 包含以下内容的目录:

<?php 
   /* Template Name: Concert*/

   add_body_classes(\'page_concert\'); /* Custom function that adds arguments to
                                        body class using body_class filter */

   get_header();

   ...

   get_footer();

?>
该模板按预期显示在页面编辑器中,但在加载使用该模板的页面时,默认为page.php 改为使用模板。

我在一些帖子中读到,为了让子主题正确加载页面模板,必须有一个正确的index.php, header.phppage.php, 我在我的主题文件夹中设置了。还有一些人指出front-page.php 导致主页没有加载其设置模板,但是从父主题中删除文件对我没有多大帮助。

使用Template: theme-name 主题的内部style.css 据说也有问题。但如果没有这一行代码,子主题将成为一个独立的主题。

如何使自定义页面模板在子主题中工作?有没有人经历过同样的情况?

2 个回复
SO网友:Victor Oliveira

没关系。我已删除front-page.php 再次从父主题开始,现在它正在工作。出于某种奇怪的原因,它第一次没有起作用。也许我还有其他一些设置错误。

如果有人可以关闭此线程,请关闭!

SO网友:MikeNGarrett

编辑:我知道你已经回答了自己的问题,但你提供的答案对我来说似乎有点可疑,所以我还是要发布这个。

儿童主题需要几个关键元素才能发挥作用:风格。带有标题信息的css(包括Template: parent-theme-name), a功能。php文件(您可以在其中将父主题的样式表排队),并从WordPress管理员激活子主题。Learn more about child themes in the WordPress Codex.

激活子主题后,子主题中的所有文件将覆盖父主题中同名的模板。Take a look at the template hierarchy 更好地了解这些模板的名称以及它们的优先级。

最后,让我们谈谈页面模板。通过调用文件,您的想法是正确的concert.php 因为对于自定义页面模板,文件名不应以page-. 这用于特定的slug或id驱动的页面模板。在该文件的顶部,您需要包括/* Template Name: Name of Template */, 就像你已经做过的那样。这将出现在下面的页面属性中Template. 创建此文件并将其存储在子主题中后,必须从新页面的页面属性下的下拉列表中选择此模板。More information on page templates in the WordPress Codex.

我希望这有帮助!

相关推荐

Custom term templates

所以,我在网上做了一些研究,但没有找到可靠的答案,所以我来了。我需要为特定类别创建自定义woocommerce类别页面。例如,我有一个类别叫做“Awesome”。而不是使用由短代码生成的常规类别页面[product_category category=\"something\"], 我想为自定义特定类别页面Awesome.我发现我需要编辑taxonomy-product_cat.php 但我不知道如何将其链接到名为awesome.换句话说,我正在考虑制作php文件的自定义副本,然后将其添加为主题templ