问题根源分析
页面模板文件(page-about.php, page-services.php)需要满足两个基本条件才能在下拉菜单中显示:

(图片来源网络,侵删)
- 文件位置正确:模板文件必须位于你当前主题的根目录下。
- 文件头部有正确的注释:文件顶部必须有特定的PHP注释,告诉WordPress“我是一个页面模板”。
解决方案(按推荐顺序尝试)
检查页面模板的文件头注释(最常见原因)
这是最根本的原因,如果你自己创建或修改了模板文件,很可能漏掉了这段“身份证”。
打开你的模板文件(page-templates/my-custom-template.php),在文件的最顶部,确保有类似下面这样的代码:
<?php /* * Template Name: 我的自定义模板 * Description: 这个模板用于展示我们公司的介绍页面。 */ ?>
关键点:
- 必须以
<?php开头。 - 必须包含
/* Template Name: 你的模板名称 */这一行,这里的“你的模板名称”就是你在页面编辑器下拉菜单里看到的名字。 - 可以包含
Description(描述),但这不是必须的。
如果缺少这段代码,WordPress就根本不会“知道”这是一个可用的页面模板。

(图片来源网络,侵删)
检查文件存放位置
确保你的自定义模板文件位于主题的根目录或者主题的 page-templates 子文件夹中。
正确位置示例:
wp-content/themes/你的主题名/page-templates/full-width.phpwp-content/themes/你的主题名/page-contact.php
错误位置示例:
wp-content/themes/你的主题名/includes/page-templates/full-width.php(除非你的主题特别支持这个路径)
检查主题是否支持自定义页面模板
有些主题(尤其是高度定制化的主题或页面构建器主题)可能会有自己的逻辑来管理模板。

(图片来源网络,侵删)
-
切换到默认主题测试:
- 进入 外观 -> 主题。
- 暂时切换到WordPress自带的默认主题(如 Twenty Twenty-Four)。
- 尝试创建一个新页面,看模板选项是否出现。
- 如果出现了,说明问题出在你原来的主题上,你可能需要联系主题作者,或者查看主题的文档,了解如何正确添加自定义页面模板。
-
检查主题的
functions.php文件:- 有些主题可能会通过
functions.php文件来过滤或禁用某些模板,如果你有修改过这个文件,请检查是否有相关的代码。
- 有些主题可能会通过
禁用插件(排查插件冲突)
某些插件,特别是缓存插件、页面构建器插件(如 Elementor, WPBakery, Divi)或SEO插件,有时会干扰WordPress的正常功能,包括页面模板的加载。
- 进入 插件 -> 已安装插件。
- 不要直接删除,先将所有插件停用。
- 刷新你的网站后台,尝试创建一个新页面,看模板选项是否出现。
- 如果出现了,说明问题是由某个插件引起的。逐个重新激活插件,每激活一个,就去测试一次模板选项。
- 当你重新激活某个插件后,问题再次出现,那么就是这个插件导致的冲突。
- 你可以尝试更新这个插件到最新版本,或者联系其开发者寻求支持。
检查文件编码和权限
- 文件编码:确保你的模板文件是以 UTF-8 无BOM(UTF-8 without BOM) 编码保存的,使用 Notepad++、VS Code 等编辑器可以轻松检查和修改编码,错误的编码可能会导致PHP解析错误,从而使模板无法识别。
- 文件权限:确保模板文件的权限设置正确,文件权限设置为
644,文件夹权限设置为755,错误的权限可能导致WordPress无法读取文件。
检查代码中的语法错误
在你的模板文件中,即使是一个小小的语法错误(比如缺少一个分号 或大括号 ),都可能导致整个文件无法被PHP正确解析,从而在WordPress中不可见。
- 使用PHP语法检查工具(如在线PHP Lint工具)来检查你的代码。
- 在代码编辑器中,检查是否有任何语法高亮报错。
手动刷新模板缓存
WordPress 有一个模板缓存机制,如果你刚刚上传或修改了模板文件,缓存可能还没有更新。
- 安装并激活一个 缓存插件(如 W3 Total Cache, WP Rocket)。
- 在缓存插件的设置中,找到并 清除/清除所有缓存。
- 如果你没有使用缓存插件,可以尝试安装一个简单的“刷新缓存”插件,或者通过代码来清除,一个简单的办法是修改一下主题的
style.css文件(比如在版本号上加个.1),保存一下,这也能触发WordPress重新扫描文件。
总结与排查清单
当遇到“无法选择页面模板”的问题时,请按以下清单一步步操作:
- ✅ 检查模板文件头:确认有
/* Template Name: ... */注释。 - ✅ 检查文件位置:确认文件在主题根目录或
page-templates文件夹中。 - ✅ 切换到默认主题:判断是否是主题本身的问题。
- ✅ 禁用所有插件:判断是否是插件冲突。
- ✅ 检查文件编码:确保是
UTF-8 无BOM。 - ✅ 检查代码语法:确保没有PHP错误。
- ✅ 清除缓存:清除WordPress和任何缓存插件的缓存。
按照这个流程,99% 的问题都能得到解决,如果所有方法都试过了还是不行,可以提供你的主题名称、是否使用了页面构建器、以及你的模板文件头代码,这样我可以给出更精确的建议。
