WordPress主题中将page-$slug.php模板放入子目录失效求助
解决WordPress页面模板移至子目录后失效的问题
别担心,我帮你整理几个关键的排查步骤,应该能搞定这个问题:
检查模板头部的声明注释:
这是WordPress识别页面模板的核心,必须在page-again.php文件的最顶部加上标准声明,格式如下:<?php /* Template Name: Page Again */ ?>要是缺了这个注释,哪怕路径再对,WordPress也找不到这个模板。
确认子目录名称的准确性:
WordPress默认支持的页面模板子目录是全小写的page-templates,要注意服务器的大小写敏感性(比如Linux系统严格区分大小写),如果目录名写成了Page-Templates或者其他变体,就会识别失败,务必保证目录名完全匹配。强制刷新WordPress的模板缓存:
WordPress有时候不会自动扫描新目录里的模板文件,你可以试试这些操作:- 进入后台的页面编辑界面,刷新页面后再看看模板下拉选项里有没有你的模板;
- 到「外观→自定义」里随便改个小设置然后保存,触发WordPress重新扫描主题文件。
检查文件和目录的权限:
移动文件后可能权限发生了变化,确保page-templates目录的权限是755,page-again.php文件的权限是644(这是WordPress文件的标准权限),如果权限不对,服务器会拒绝WordPress读取模板文件。排查主题自定义代码的干扰:
有些主题会在functions.php里自定义模板加载逻辑,比如限制只能从主题根目录读取模板。你可以暂时把functions.php里的自定义模板相关代码注释掉,测试一下模板是否能正常显示,要是恢复了,再调整那部分代码适配子目录的情况。
内容的提问来源于stack exchange,提问作者Jiang Zhan
相关产品推荐
相关产品推荐

