Php Wordpress中主题从无到有子文件夹中的页面模板

Php Wordpress中主题从无到有子文件夹中的页面模板,php,wordpress,templates,wordpress-theming,Php,Wordpress,Templates,Wordpress Theming,我正在从头开始构建一个主题,我希望将所有自定义页面模板和单个帖子类型模板都放在一个子文件夹中(见下文) -主题/ -page.php -single.php --模板/ ---page-news.php ---single-report.php 但是,当我将page news.php移动到此文件夹时,“默认模板”不会拾取模板 注意:我使用的是WordPress 4.6.1和我从头开始构建的主题。据我所知,如果您将模板放入子文件夹中,WordPress将不会自动识别任何模板。此外,我想没有钩子来

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

-主题/
-page.php
-single.php
--模板/
---page-news.php
---single-report.php

但是,当我将
page news.php
移动到此文件夹时,“默认模板”不会拾取模板


注意:我使用的是WordPress 4.6.1和我从头开始构建的主题。

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

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

这样,您的子文件夹和代码的灵活性将提高10倍:您不需要在模板文件中复制/粘贴代码

使用

在您的路由功能中

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

注:WP的加载机制如下图所示:


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

您只能在主题的根目录中定义
模板。我通常按照以下方式管理我的所有部分模板:

 -Theme
 -- Templates Folder (partial templates etc.)
 --"news-template.php" file (I require/load all the templates I need here.)
这样,您就可以将所有的
部分模板
保存在模板文件夹中,并根据需要对其进行组织。并将它们加载到项目根目录中的
模板
文件中


我希望我的解释足够清楚。

您的结构是否基于?是的,我是@FritsCool-将模板文件夹中的文件直接移动到主题文件夹中。:)是否可以使用类似于的技术更改404.php或single.php模板的默认位置?我希望我的模板根文件夹仅为home.php、index.php和style.css。我想要文件夹中的所有内容。@DavidA.French是的,这当然是可能的。只需将您的条件放入index.php即可决定。也不是我更新了我的答案。是否有index.php条件的样板文件?默认情况下,我假设这是由WP核心处理的,对吗?默认情况下:是的。但是,如果您不创建single.php或page.php之类的模板,那么默认情况下总是加载index.php。您甚至可以只使用一个循环,只从循环中执行条件语句。再看看我的最新答案。
 -Theme
 -- Templates Folder (partial templates etc.)
 --"news-template.php" file (I require/load all the templates I need here.)