WordPress Amelia 預約系統取得使用者 ID 實作筆記

前言

在整合 WordPress 插件如 Amelia 預約系統時,常需要從 WordPress 使用者中取得對應的 Amelia 使用者 ID。這對於同步使用者資料或進行特定預約操作非常重要。本文針對如何透過 PHP 及 WordPress 資料庫物件 $wpdb 查詢 Amelia 使用者 ID 進行說明,適合有基礎 PHP 與 WordPress 開發經驗的工程師或自學者。

函式說明

以下函式 get_amelia_user_id 主要功能是透過 WordPress 使用者 ID 查詢 Amelia 系統中對應的使用者 ID。若查無資料,則回傳 false

function get_amelia_user_id($wp_user_id) {
    if (empty($wp_user_id)) {
        return false; // 如果 WordPress 使用者 ID 為空,直接回傳 false
    }
    global $wpdb; // 呼叫 WordPress 資料庫全域物件
    $user_table = $wpdb->prefix . 'amelia_users'; // Amelia 的資料表名稱
    $a_uid = $wpdb->get_results($wpdb->prepare("SELECT id FROM {$user_table} WHERE externalId = %d", $wp_user_id), ARRAY_A);
    if (count($a_uid) > 0) {
        return $a_uid[0]['id']; // 如果找到結果,回傳第一筆的 id
    } else {
        return false; // 沒有找到結果時回傳 false
    }
}

函式細節說明

  1. 檢查輸入值是否有效
    • 使用 empty() 判斷 $wp_user_id 是否為空,避免無意義的資料庫查詢。
  2. 資料表命名
    • 利用 $wpdb->prefix 動態取得 WordPress 資料表前綴,確保資料表名稱正確。
  3. 安全查詢
    • 使用 $wpdb->prepare 來避免 SQL 注入風險,確保查詢安全。
  4. 回傳邏輯
    • 若查詢結果非空,回傳第一筆資料的 id,否則回傳 false

實際應用場景

  • 自動同步 WordPress 使用者與 Amelia 使用者資料,確保兩邊資料一致。
  • 根據 WordPress 使用者身份執行 Amelia 預約系統的特定操作。
  • 在後台管理介面快速查詢 Amelia 使用者資料,提升管理效率。

常見坑與建議

  • 確認 Amelia 資料表名稱與結構,避免因版本差異導致查詢失敗。
  • 建議在實務中加入錯誤處理與日誌記錄,提升系統穩定性與除錯效率。
  • 若系統使用多語系或多站台,需注意資料表前綴與使用者 ID 的對應關係。

完整程式碼

function get_amelia_user_id($wp_user_id) {
    if (empty($wp_user_id)) {
        return false; // 如果 WordPress 使用者 ID 為空,直接回傳 false
    }
    global $wpdb; // 呼叫 WordPress 資料庫全域物件
    $user_table = $wpdb->prefix . 'amelia_users'; // Amelia 的資料表名稱
    $a_uid = $wpdb->get_results($wpdb->prepare("SELECT id FROM {$user_table} WHERE externalId = %d", $wp_user_id), ARRAY_A);
    if (count($a_uid) > 0) {
        return $a_uid[0]['id']; // 如果找到結果,回傳第一筆的 id
    } else {
        return false; // 沒有找到結果時回傳 false
    }
}