Wordpress中从头开始的主题子文件夹中的页面模板

时间:2016-09-16 13:41:36

标签: php wordpress templates wordpress-theming

我正在从头开始构建主题,我希望将所有自定义页面模板和单个帖子类型模板放在子文件夹中(见下文)。

-theme/ - page.php - single.php -- templates/ --- page-news.php --- single-report.php

但是,当我将page-news.php移动到此文件夹时,"默认模板"没有拿起模板。

N.B。我正在使用 WordPress 4.6.1 并使用我从头开始构建的主题。

2 个答案:

答案 0 :(得分:1)

您只能在主题的根目录中定义templates。我通常管理我的所有部分模板如下:

 -Theme
 -- Templates Folder (partial templates etc.)
 --"news-template.php" file (I require/load all the templates I need here.)

这样,您可以将所有partial templates保留在模板文件夹中,并根据需要对其进行结构化。并将它们加载到项目根目录中的template文件中。

我希望我的解释清楚。

答案 1 :(得分:0)

据我所知,如果你将它们放入子文件夹,WordPress将不会自动识别你的任何模板。我想还有没有钩来解决这个问题。但是,您可以搜索核心并尝试修改它。

我建议如下:不要使用WordPress自动检测模板文件,无论如何它是非常笨拙的。在index.php文件中使用条件标记以正确路由WordPress。

https://codex.wordpress.org/Conditional_Tags

通过这种方式,您对子文件夹和代码的灵活性提高了10倍:您无需在模板文件中复制/粘贴代码。

使用

get_template_part(..)

在您的路由功能中。

我已经建立了数百个WordPress网站,我总是这样做。在一些WordPress书籍中也推荐使用它。

注意:WP的加载机制如下图所示:https://developer.wordpress.org/files/2014/10/wp-hierarchy.png

更新2018:可以将在帖子编辑屏幕中可选择的页面模板放入/page-templates/子文件夹,并自动检测它们。