WordPress主题:新建模板页面与template-parts及表单模板不显示问题咨询
WordPress主题开发问题解答
1. 如何创建新的模板页面与template-parts
创建自定义页面模板
我来一步步教你创建自定义页面模板,操作很直观:
- 先在当前激活的主题(或子主题)根目录下新建一个PHP文件,文件名建议用小写字母+下划线的格式,比如
page-custom-db.php,避免特殊字符导致识别问题。 - 在文件最顶部的PHP代码块里添加模板识别注释——这是WordPress能识别到它的关键,格式不能错:
<?php /* Template Name: 自定义数据库表单页面 */ ?> - 接下来就可以编写页面结构和逻辑了,比如调用主题的头部、底部,插入你的自定义表单内容:
<?php /* Template Name: 自定义数据库表单页面 */ // 引入主题头部 get_header(); ?> <!-- 自定义页面内容区域 --> <div class="custom-form-wrap"> <h2>提交你的信息</h2> <!-- 这里放你的表单代码 --> </div> <?php // 引入主题底部 get_footer(); ?> - 保存文件后,登录WordPress后台新建或编辑页面,右侧「页面属性」的「模板」下拉菜单里就能看到你命名的模板了。
创建并使用template-parts
Template-parts的核心是把重复模块拆分出来,方便复用和维护,比如你的表单模块就很适合做成template-part:
- 在主题目录下新建
template-parts文件夹(没有的话直接创建)。 - 在这个文件夹里新建PHP文件,比如
form-db-handler.php,把表单的HTML和交互逻辑写进去:<?php // 表单提交处理逻辑 if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 和自定义数据库表交互的代码,比如用$wpdb对象操作 global $wpdb; $custom_table = $wpdb->prefix . 'your_custom_table'; // 替换成你的自定义表名 $wpdb->insert( $custom_table, array( 'username' => sanitize_text_field($_POST['username']), 'email' => sanitize_email($_POST['email']) ) ); } ?> <form method="post" action="<?php echo esc_url(get_permalink()); ?>"> <div class="form-item"> <label for="username">用户名:</label> <input type="text" id="username" name="username" required> </div> <div class="form-item"> <label for="email">邮箱:</label> <input type="email" id="email" name="email" required> </div> <button type="submit" class="submit-btn">提交</button> </form> - 回到自定义页面模板里,用
get_template_part()函数调用这个template-part:
这里的<?php /* Template Name: 自定义数据库表单页面 */ get_header(); ?> <div class="custom-form-wrap"> <h2>提交你的信息</h2> <!-- 调用拆分好的表单模块 --> <?php get_template_part('template-parts/form', 'db-handler'); ?> </div> <?php get_footer(); ?>get_template_part('template-parts/form', 'db-handler')对应template-parts/form-db-handler.php文件,第一个参数是文件前缀,第二个是后缀,中间用连字符连接。
2. 自定义模板未在页面属性中显示的排查与解决
如果你的模板没出现在下拉菜单里,大概率是这几个问题,你可以逐一排查:
检查模板注释格式是否正确
这是最常见的坑,必须确保注释是PHP块内的多行注释,且放在文件最开头,不能有任何HTML或其他代码在它前面。正确格式如下:
<?php /* Template Name: 你的模板名称 */ // 下面才是其他代码 ?>
注意:Template Name:是固定写法,冒号后面必须有空格,模板名称可以自定义,但单词不能写错。
确认文件位置是否正确
- 模板文件必须放在当前激活的主题(或子主题)的根目录,或者主题的
page-templates文件夹里(WordPress 4.7及以上版本支持这个目录,部分主题会默认用这个结构)。 - 如果用的是子主题,一定要把文件放在子主题目录里,别放到父主题里,否则激活子主题后会找不到模板。
检查文件名是否合规
文件名只能包含小写字母、数字和下划线,不能有空格、中文或特殊字符,比如page-db-form.php是正确的,页面模板.php或者page db form.php都会导致WordPress无法识别。
排查PHP语法错误
如果模板里有PHP语法错误(比如少了分号、括号不匹配、函数调用错误),WordPress可能无法解析这个模板,自然不会显示在菜单里。你可以用本地PHP环境的命令行工具检查:输入php -l 你的模板文件名.php,就能看到有没有语法问题。
清除缓存
有时候WordPress缓存插件或服务器缓存会导致模板不及时显示,你可以试试:
- 清除后台缓存插件(比如WP Rocket、W3 Total Cache)的缓存。
- 刷新几次WordPress后台页面,或者重新登录后台。
内容的提问来源于stack exchange,提问作者Vangari Madhu
相关产品推荐
相关产品推荐

