不裝插件!輕松搞定 WordPress HTML 表單連接數(shù)據(jù)庫(kù)的秘訣

你敢相信嗎?聯(lián)系表單、用戶注冊(cè)表單,還是數(shù)據(jù)提交表單,背后的原理都是 前端 HTML 表單 + 后端數(shù)據(jù)庫(kù)處理。本文會(huì)從基礎(chǔ)概念、實(shí)際操作到注意事項(xiàng),詳細(xì)講解如何在 WordPress 中創(chuàng)建一個(gè) HTML 表單并把數(shù)據(jù)存入數(shù)據(jù)庫(kù)。

圖片[1]-WordPress 自定義 HTML 表單+數(shù)據(jù)庫(kù)實(shí)戰(zhàn)!新手也能搞定

一、為什么要自定義 HTML 表單?

WordPress 雖然有許多表單插件(如 Contact Form 7、WPForms),但在一些場(chǎng)景下,我們需要手寫 HTML 表單:

  • 自定義業(yè)務(wù)邏輯:比如需要收集額外字段或存儲(chǔ)到自定義表。
  • 性能更高:不用加載復(fù)雜插件,代碼更輕量。
  • 完全可控:前端設(shè)計(jì)與后臺(tái)處理邏輯由自己決定。

二、HTML 表單的基本結(jié)構(gòu)

一個(gè)最簡(jiǎn)單的 HTML 表單包括輸入框、提交按鈕和 form 標(biāo)簽,例如:

圖片[2]-WordPress 自定義 HTML 表單+數(shù)據(jù)庫(kù)實(shí)戰(zhàn)!新手也能搞定
<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>

說(shuō)明:

  • method="post":用 POST 提交表單數(shù)據(jù)。
  • action="":提交到當(dāng)前頁(yè)面。
  • name:字段的關(guān)鍵屬性,提交后通過(guò)它獲取值。

三、如何在 WordPress 中處理表單數(shù)據(jù)

WordPress 中,通常在 functions.php 或自定義插件中添加處理邏輯。

functions.php 文件

  • 每個(gè) WordPress 主題都會(huì)有一個(gè) functions.php 文件。
  • 你可以在這里寫代碼,讓 WordPress 在加載主題時(shí)執(zhí)行這些邏輯。
  • 適合放一些簡(jiǎn)單的功能,比如表單數(shù)據(jù)處理。

自定義插件

  • 如果功能比較獨(dú)立、復(fù)雜,最好寫成插件。
  • 插件有單獨(dú)的文件夾和 PHP 文件,不會(huì)因?yàn)閾Q主題而丟失。
  • 比如做一個(gè)“自定義表單收集插件”,這樣代碼更清晰、更安全。

1. 獲取表單數(shù)據(jù)

圖片[3]-WordPress 自定義 HTML 表單+數(shù)據(jù)庫(kù)實(shí)戰(zhàn)!新手也能搞定
if ( isset($_POST['submit_form']) ) {
    $name  = sanitize_text_field($_POST['name']);
    $email = sanitize_email($_POST['email']);
}

使用 sanitize_text_field()sanitize_email() 對(duì)數(shù)據(jù)進(jìn)行過(guò)濾,確保安全。

2. 存入數(shù)據(jù)庫(kù)

WordPress 提供了 $wpdb 對(duì)象,可以很方便地與數(shù)據(jù)庫(kù)交互。

圖片[4]-WordPress 自定義 HTML 表單+數(shù)據(jù)庫(kù)實(shí)戰(zhàn)!新手也能搞定
global $wpdb;
$table_name = $wpdb->prefix . "custom_form"; // 數(shù)據(jù)表名

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

說(shuō)明:

  • $wpdb->prefix 是數(shù)據(jù)庫(kù)表前綴(默認(rèn)是 wp_)。
  • insert() 方法會(huì)把數(shù)據(jù)寫入指定表。

3. 在數(shù)據(jù)庫(kù)中創(chuàng)建表

需要先為表單創(chuàng)建一個(gè)存儲(chǔ)數(shù)據(jù)的表,可以在插件激活時(shí)運(yùn)行 SQL:

圖片[5]-WordPress 自定義 HTML 表單+數(shù)據(jù)庫(kù)實(shí)戰(zhàn)!新手也能搞定
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');

這段代碼會(huì)在切換主題時(shí)創(chuàng)建數(shù)據(jù)表。

四、在頁(yè)面中顯示表單

WordPress 建議通過(guò) 短代碼(shortcode) 來(lái)調(diào)用表單,這樣可以在任意頁(yè)面嵌入。

圖片[6]-WordPress 自定義 HTML 表單+數(shù)據(jù)庫(kù)實(shí)戰(zhàn)!新手也能搞定
function custom_form_shortcode() {
    ob_start();
    ?>
    <form method="post" action="">
      <input type="text" name="name" placeholder="請(qǐng)輸入姓名">
      <input type="email" name="email" placeholder="請(qǐng)輸入郵箱">
      <input type="submit" name="submit_form" value="提交">
    </form>
    <?php
    return ob_get_clean();
}
add_shortcode('custom_form', 'custom_form_shortcode');

在頁(yè)面中插入 [custom_form] 即可顯示表單。

五、如何查看提交的數(shù)據(jù)

  • 登錄 phpMyAdmin 或數(shù)據(jù)庫(kù)管理工具,找到 wp_custom_form 表,即可查看提交的數(shù)據(jù)。
圖片[7]-WordPress 自定義 HTML 表單+數(shù)據(jù)庫(kù)實(shí)戰(zhàn)!新手也能搞定
  • 如果希望在后臺(tái)查看,可以寫一個(gè)簡(jiǎn)單的管理頁(yè)面,用 $wpdb->get_results() 把數(shù)據(jù)拉出來(lái)展示。

六、安全性與優(yōu)化建議

  • 數(shù)據(jù)過(guò)濾與驗(yàn)證
    • 使用 sanitize_*() 系列函數(shù)清理輸入數(shù)據(jù)。
    • 對(duì)郵箱等特殊字段進(jìn)行正則驗(yàn)證。
  • 防止 CSRF 攻擊
    WordPress 提供了 wp_nonce_field()check_admin_referer() 來(lái)保證請(qǐng)求安全。
  • 分頁(yè)與限制
    • 對(duì)表單提交加頻率限制,避免垃圾數(shù)據(jù)灌入。
    • 數(shù)據(jù)展示時(shí)做分頁(yè)處理,避免后臺(tái)加載過(guò)慢。
  • 考慮使用 AJAX
    可以通過(guò) AJAX (是一系列用于創(chuàng)建響應(yīng)更快的Web應(yīng)用程序的技術(shù)組合)提交表單,讓頁(yè)面無(wú)需刷新,提升用戶體驗(yàn)。

七、總結(jié)

在 WordPress 中創(chuàng)建 HTML 表單并連接數(shù)據(jù)庫(kù),核心步驟包括:寫出 HTML 表單結(jié)構(gòu) > 在 PHP 中獲取并處理數(shù)據(jù) > 使用 $wpdb 寫入數(shù)據(jù)庫(kù) > 用 shortcode 在前端展示表單。

相比插件方式,自定義表單更靈活,能精準(zhǔn)滿足項(xiàng)目需求。雖然代碼量稍大,但帶來(lái)的自由度和可控性值得投入。

    掌握這個(gè)流程后,你就能輕松擴(kuò)展網(wǎng)站功能,例如自定義報(bào)名系統(tǒng)、問(wèn)卷收集、會(huì)員信息管理等,為網(wǎng)站帶來(lái)更多可能性!


    聯(lián)系我們
    教程看不懂?聯(lián)系我們?yōu)槟赓M(fèi)解答!免費(fèi)助力個(gè)人,小企站點(diǎn)!
    客服微信
    客服微信
    電話:020-2206-9892
    QQ咨詢:1025174874
    郵件:info@361sale.com
    工作時(shí)間:周一至周五,9:30-18:30,節(jié)假日休息
    ? 轉(zhuǎn)載聲明
    本文作者:哇哇
    THE END
    喜歡就支持一下吧
    點(diǎn)贊2497 分享
    評(píng)論 搶沙發(fā)

    請(qǐng)登錄后發(fā)表評(píng)論

      暫無(wú)評(píng)論內(nèi)容