我正在从头开始构建主题,我希望将所有自定义页面模板和单个帖子类型模板放在子文件夹中(见下文)。
-theme/
- page.php
- single.php
-- templates/
--- page-news.php
--- single-report.php
但是,当我将page-news.php
移动到此文件夹时,"默认模板"没有拿起模板。
N.B。我正在使用 WordPress 4.6.1 并使用我从头开始构建的主题。
答案 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/
子文件夹,并自动检测它们。