361 361Sale WordPress Care by Openbyt · WordPress 修复与运维

不装插件!轻松搞定 WordPress HTML 表单连接数据库的秘诀

托尼屎大颗
WordPress 自定义 HTML 表单

你敢相信吗?联系表单、用户注册表单,还是数据提交表单,背后的原理都是 前端 HTML 表单 + 后端数据库处理。本文会从基础概念、实际操作到注意事项,详细讲解如何在 WordPress 中创建一个 HTML 表单并把数据存入数据库。

一、为什么要自定义 HTML 表单?

WordPress 虽然有许多表单插件(如 Contact Form 7、WPForms),但在一些场景下,我们需要手写 HTML 表单:

二、HTML 表单的基本结构

一个最简单的 HTML 表单包括输入框、提交按钮和 form 标签,例如:

<form method="post" action="">
  <label for="name">姓名:</label>
  <input type="text" name="name" id="name" required>
  
  <label for="email">邮箱:</label>
  <input type="email" name="email" id="email" required>
  
  <input type="submit" name="submit_form" value="提交">
</form>

说明:

三、如何在 WordPress 中处理表单数据

WordPress 中,通常在 functions.php 或自定义插件中添加处理逻辑。

functions.php 文件

自定义插件

1. 获取表单数据

if ( isset($_POST['submit_form']) ) {
    $name  = sanitize_text_field($_POST['name']);
    $email = sanitize_email($_POST['email']);
}

使用 sanitize_text_field()sanitize_email() 对数据进行过滤,确保安全。

2. 存入数据库

WordPress 提供了 $wpdb 对象,可以很方便地与数据库交互。

global $wpdb;
$table_name = $wpdb->prefix . "custom_form"; // 数据表名

$wpdb->insert(
    $table_name,
    array(
        'name'  => $name,
        'email' => $email,
        'created_at' => current_time('mysql')
    )
);

说明:

3. 在数据库中创建表

需要先为表单创建一个存储数据的表,可以在插件激活时运行 SQL:

function create_custom_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . "custom_form";
    
    $charset_collate = $wpdb->get_charset_collate();
    
    $sql = "CREATE TABLE $table_name (
      id mediumint(9) NOT NULL AUTO_INCREMENT,
      name varchar(50) NOT NULL,
      email varchar(100) NOT NULL,
      created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
      PRIMARY KEY  (id)
    ) $charset_collate;";
    
    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta($sql);
}
add_action('after_switch_theme', 'create_custom_table');

这段代码会在切换主题时创建数据表。

四、在页面中显示表单

WordPress 建议通过 短代码(shortcode) 来调用表单,这样可以在任意页面嵌入。

function custom_form_shortcode() {
    ob_start();
    ?>
    <form method="post" action="">
      <input type="text" name="name" placeholder="请输入姓名">
      <input type="email" name="email" placeholder="请输入邮箱">
      <input type="submit" name="submit_form" value="提交">
    </form>
    <?php
    return ob_get_clean();
}
add_shortcode('custom_form', 'custom_form_shortcode');

在页面中插入 [custom_form] 即可显示表单。

五、如何查看提交的数据

六、安全性与优化建议

七、总结

在 WordPress 中创建 HTML 表单并连接数据库,核心步骤包括:写出 HTML 表单结构 > 在 PHP 中获取并处理数据 > 使用 $wpdb 写入数据库 > 用 shortcode 在前端展示表单。

相比插件方式,自定义表单更灵活,能精准满足项目需求。虽然代码量稍大,但带来的自由度和可控性值得投入。

    掌握这个流程后,你就能轻松扩展网站功能,例如自定义报名系统、问卷收集、会员信息管理等,为网站带来更多可能性!

    需要工程师帮你判断?

    把症状、错误提示和最近改动发过来。

    我们先判断风险、可能原因和安全下一步,再决定是否需要登录后台或服务器。

    开始初诊

    需要把这篇文章里的排查落到你的网站上吗?

    把网址、错误提示、最近改动和影响范围发过来。我们先判断风险、备份状态和安全下一步;涉及数据库、支付、订单或安全问题时,不建议直接在生产站连续试错。

    公开检测 · 无需注册 · 先判断风险 提交后会生成工单编号
    初诊阶段不要提交后台、主机、数据库或支付账号密码。
    紧急宕机、结账失败、安全跳转优先复核;普通问题通常 1 个工作日内回复。 初诊阶段不需要后台密码;需要权限时会单独确认最小权限和回滚方式。
    提交前提醒先保留备份和错误提示,不要在生产站连续试错。