WordPress 不再是孤島!API 串接終極實戰:手把手搞定 LINE / HubSpot / n8n,打造你的自動化帝國

2025/09/15 | API 串接與自動化

WordPress 不再是孤島!API 串接終極實戰:手把手搞定 LINE / HubSpot / n8n,打造你的自動化帝國

嗨,我是浪花科技的 Eric。身為一個整天跟程式碼和伺服器打交道的工程師,我最常被問到的問題之一就是:「Eric,我的 WordPress 網站功能很棒,但感覺它像座孤島,很多資料都要手動複製貼上到其他系統,有沒有辦法讓它『自動化』?」

每次聽到這個問題,我眼睛都會發亮。當然有!這就是 WordPress 第三方 API 串接 的魔力所在。今天,我們不談虛無飄渺的理論,直接捲起袖子,帶你從零到一,實作串接三個在業界極具代表性的服務:LINE(即時通訊)、HubSpot(CRM 客戶關係管理)和 n8n(萬能自動化中樞),讓你的 WordPress 網站從一個單純的內容發布平台,進化成企業營運的數位心臟。

為什麼你的 WordPress 需要學會「跟別人聊天」?

想像一下,你的網站每天都在產生寶貴的數據:新用戶註冊、新文章發布、新訂單成立…但如果這些數據只是靜靜地躺在資料庫裡,那就太浪費了。它們的價值在於「流動」。

一個小小的工程師囉嗦:很多企業主以為網站蓋好就結束了,但真正的挑戰是「數據整合」。數據孤島是數位轉型的最大敵人,而 API 就是打破這些高牆的攻城槌。

  • 手動作業的惡夢:每天手動把 WooCommerce 的訂單資料匯出,再匯入到 HubSpot?把新文章連結貼到 LINE 群組?這不僅浪費時間,更容易出錯。
  • 錯失的即時機會:當客戶在你的網站上完成註冊,如果能立刻將他加入 HubSpot 的歡迎序列,並透過 LINE 發送一則個人化歡迎訊息,這體驗是不是天差地別?
  • 無法擴展的流程:當業務量成長,手動流程很快就會崩潰。一個自動化的工作流,才能支撐你的業務規模化成長。

透過 WordPress 第三方 API 串接實作,我們可以讓 WordPress 主動出擊,將正確的資料,在正確的時間,送到正確的地方。這就是我們今天要完成的任務。

API 串接的核心基礎:WordPress HTTP API

在我們動手之前,必須先認識我們的主力武器:WordPress 內建的 HTTP API。簡單來說,它提供了一組函式,讓我們可以從 WordPress 內部,安全又穩定地對外部服務發送網路請求(Request)。

你可能會想:「我直接用 PHP 的 cURL 不行嗎?」當然可以,但這就像你有輛 F1 賽車(WordPress HTTP API),卻偏要自己徒手造車輪(cURL)。WordPress 內建的函式,如 wp_remote_post()wp_remote_get(),已經幫我們處理好很多麻煩事,像是 SSL 憑證驗證、Cookies、重新導向等,而且它還有掛鉤 (Hooks) 可以讓你進一步客製化,穩定性跟整合度都更高。

API 請求的四大要素

無論你串接哪個服務,一個 API 請求基本上都包含這四個部分,搞懂它們,你就搞懂了 90% 的 API 串接:

  • Endpoint (端點):你要溝通的對象地址,就是一串 URL。
  • Method (方法):溝通的方式,最常用的是 POST (新增資料) 和 GET (讀取資料)。
  • Headers (標頭):請求的「身分證」,通常包含認證資訊 (如 API Key) 和內容格式 (如 Content-Type: application/json)。
  • Body (內容):你要傳送的資料,通常是 JSON 格式的數據包 (Payload)。

好了,理論課到此為止,讓我們直接來看實戰!

實戰一:新文章發佈,自動通知 LINE 群組

這個需求非常普遍,可以讓團隊第一時間知道官網有新內容。我們將使用 LINE Notify,它是 LINE Messaging API 的一個簡化版,非常適合用來發送通知。

步驟:

  1. 取得權杖 (Token):前往 LINE Notify 官網,登入後點擊「發行權杖」,選擇你要通知的聊天室,然後你會得到一組權杖。記住,這組權杖只會出現一次,請務必複製下來。
  2. 撰寫程式碼:將你的權杖放入 wp-config.php,這是最佳實踐,避免金鑰外洩。
    define('LINE_NOTIFY_TOKEN', '你的LINE Notify權杖');
  3. 掛上 WordPress 的鉤子:我們需要在文章「發佈」的那個時間點觸發我們的程式。publish_post 這個 Action Hook 就是完美選擇。將以下程式碼加入你的子佈景主題的 functions.php 檔案中。

add_action('publish_post', 'send_line_notification_on_publish', 10, 2);

function send_line_notification_on_publish($ID, $post) {
    // 確保 LINE_NOTIFY_TOKEN 已定義
    if (!defined('LINE_NOTIFY_TOKEN') || empty(LINE_NOTIFY_TOKEN)) {
        return;
    }

    // API 端點
    $api_url = 'https://notify-api.line.me/api/notify';

    // 準備要發送的訊息
    $message = '🔥 新文章發佈!' . "\n\n" .
               '標題:' . $post->post_title . "\n" .
               '連結:' . get_permalink($ID);

    // 準備請求的 body
    $body = [
        'message' => $message,
    ];

    // 準備請求的 headers
    $headers = [
        'Authorization' => 'Bearer ' . LINE_NOTIFY_TOKEN,
    ];

    // 組合完整的請求參數
    $args = [
        'body'    => $body,
        'headers' => $headers,
        'timeout' => 15, // 增加超時時間,避免網路延遲
    ];

    // 發送請求
    $response = wp_remote_post($api_url, $args);

    // (選用) 檢查回應並記錄錯誤
    if (is_wp_error($response)) {
        error_log('LINE Notify API Error: ' . $response->get_error_message());
    } else {
        $response_code = wp_remote_retrieve_response_code($response);
        if ($response_code != 200) {
            error_log('LINE Notify API failed with code: ' . $response_code);
        }
    }
}

搞定!現在只要你發佈一篇新文章,你指定的 LINE 聊天室就會馬上收到通知。是不是很簡單?

實戰二:新用戶註冊,同步建立 HubSpot 聯絡人

如果你的網站有會員系統,那這個功能就太重要了。將會員資料自動同步到 HubSpot,你才能對他們進行後續的 Email 行銷或客戶關係管理。

步驟:

  1. 取得 API 金鑰:登入 HubSpot,前往「設定」>「整合」>「API 金鑰」。如果你是新帳戶,HubSpot 會推薦你使用「私有應用程式 (Private App)」,這更安全。無論哪種方式,你都會得到一組存取權杖 (Access Token)。
  2. 保護你的金鑰:同樣地,將金鑰加到 wp-config.php
    define('HUBSPOT_ACCESS_TOKEN', '你的HubSpot權杖');
  3. 掛上註冊的鉤子:user_register 這個 Action Hook 會在新用戶成功註冊後觸發。

add_action('user_register', 'create_hubspot_contact_on_register', 10, 1);

function create_hubspot_contact_on_register($user_id) {
    if (!defined('HUBSPOT_ACCESS_TOKEN') || empty(HUBSPOT_ACCESS_TOKEN)) {
        return;
    }

    // 從 WordPress 取得使用者資料
    $user_info = get_userdata($user_id);
    $email = $user_info->user_email;
    $firstname = $user_info->first_name;
    $lastname = $user_info->last_name;

    // HubSpot API 端點
    $api_url = 'https://api.hubapi.com/crm/v3/objects/contacts';

    // 準備請求的 body,注意 HubSpot API 的格式
    $body_data = [
        'properties' => [
            'email'     => $email,
            'firstname' => $firstname,
            'lastname'  => $lastname,
            // 你可以在這裡加入更多自訂屬性
            // 'lifecyclestage' => 'subscriber',
        ]
    ];

    // 準備請求的 headers
    $headers = [
        'Authorization' => 'Bearer ' . HUBSPOT_ACCESS_TOKEN,
        'Content-Type'  => 'application/json'
    ];

    // 組合完整的請求參數
    $args = [
        'body'    => json_encode($body_data), // HubSpot 需要 JSON 格式的字串
        'headers' => $headers,
        'method'  => 'POST',
    ];

    // 發送請求
    $response = wp_remote_post($api_url, $args);

    // (選用) 錯誤處理
    if (is_wp_error($response) || wp_remote_retrieve_response_code($response) >= 400) {
        $error_message = is_wp_error($response) ? $response->get_error_message() : wp_remote_retrieve_body($response);
        error_log('HubSpot API Error: ' . $error_message);
    }
}

一個小小的工程師囉嗦又來了:在處理 HubSpot 這種 CRM 系統時,「資料對應」是關鍵。你要清楚知道 WordPress 的哪個欄位要對應到 HubSpot 的哪個「屬性 (Property)」。事先在 HubSpot 後台建立好你需要的自訂屬性,可以讓整合事半功倍。

實戰三:WooCommerce 新訂單,觸發 n8n 工作流

n8n 是一個開源的工作流自動化工具,你可以把它想像成一個能連接所有服務的「瑞士刀」。串接 n8n 的彈性是最大的,因為你可以把複雜的商業邏輯,例如「訂單成立後,同時寫入 Google Sheets、發送 Slack 通知、並建立 Trello 卡片」,全部交給 n8n 處理,讓 WordPress 保持單純。

步驟:

  1. 建立 n8n Webhook:在 n8n 建立一個新的工作流 (Workflow),第一個節點選擇「Webhook」。你會得到一個專屬的 Webhook URL。
  2. 保護你的 URL:雖然 Webhook URL 不像 API Key 那麼敏感,但還是建議放在 wp-config.php 方便管理。
    define('N8N_ORDER_WEBHOOK_URL', '你的n8n Webhook URL');
  3. 掛上 WooCommerce 的鉤子:我們希望在訂單「處理中」或「已完成」時觸發,woocommerce_order_status_changed 是一個很好的選擇。

add_action('woocommerce_order_status_changed', 'trigger_n8n_workflow_on_new_order', 10, 4);

function trigger_n8n_workflow_on_new_order($order_id, $old_status, $new_status, $order) {
    // 我們只在新狀態是 'processing' 或 'completed' 時觸發
    if (!in_array($new_status, ['processing', 'completed'])) {
        return;
    }

    if (!defined('N8N_ORDER_WEBHOOK_URL') || empty(N8N_ORDER_WEBHOOK_URL)) {
        return;
    }

    // 準備要傳送的訂單資料
    $order_data = $order->get_data();

    // 取得訂單項目
    $line_items = [];
    foreach ($order->get_items() as $item_id => $item) {
        $line_items[] = $item->get_data();
    }
    $order_data['line_items'] = $line_items;

    // 組合請求
    $args = [
        'body'        => json_encode($order_data),
        'headers'     => ['Content-Type' => 'application/json'],
        'timeout'     => 20,
        'blocking'    => false, // 設為 false,WordPress 不會等待 n8n 回應,避免拖慢結帳流程
    ];

    // 發送請求
    wp_remote_post(N8N_ORDER_WEBHOOK_URL, $args);
}

注意看上面程式碼的 'blocking' => false,這是一個效能優化的技巧。我們只是「通知」n8n,並不需要等它處理完,所以可以讓 WordPress 送出請求後就繼續做自己的事,這樣就不會卡住使用者的結帳畫面。

總結:從孤島到中樞,你的下一步是什麼?

今天,我們從概念到實作,一步步完成了 WordPress 第三方 API 串接。你已經學會如何讓 WordPress 與 LINE、HubSpot 和 n8n 進行自動化溝通。這不只是省下你每天複製貼上的時間,更是將你的網站從一個被動的內容容器,轉變為主動的商業流程引擎。

這只是個開始。你可以發揮創意,組合不同的服務,例如:

  • 使用者留言時,透過 n8n 判斷是否為負評,若是,則自動在客服系統建立一個 Ticket。
  • 文章更新時,自動通知 LINE,並觸發 n8n 將文章內容同步到 Medium 或其他平台。
  • WooCommerce 商品低庫存時,自動發送警報到指定的 Slack 頻道。

API 串接的世界充滿無限可能。當你開始思考「如果 A 發生,就讓 B 自動完成 C」,你就已經踏上了通往高效自動化的康莊大道。

延伸閱讀

當然,如果你在實作中遇到任何挑戰,或是有更複雜的商業流程需要客製化整合,例如 ERP 系統、金流串接等,這正是我們浪花科技的專業所在。我們專注於打造穩定、高效且可擴展的 WordPress 解決方案。

準備好讓你的 WordPress 網站發揮 200% 的潛力了嗎?立即聯繫我們,讓我們的專業團隊為你評估並打造專屬的自動化流程!

常見問題 (FAQ)

Q1: 在 WordPress 中處理 API 金鑰 (API Key) 最安全的方式是什麼?

A1: 絕對不要將 API 金鑰直接寫在你的主題 functions.php 或外掛檔案中!最佳實踐是將它們定義在 wp-config.php 檔案中,使用 PHP 的 define() 函式。例如:define('MY_API_KEY', 'your-secret-key');。這個檔案通常在網站根目錄,權限控管較嚴格,且不會被版本控制系統(如 Git)追蹤到,可以有效避免金鑰外洩。

Q2: 我應該使用外掛還是自己寫程式碼來進行 API 串接?

A2: 這取決於你的需求複雜度和技術能力。如果只是簡單的、單向的通知(如 Zapier 或 IFTTT 的整合外掛),使用現成外掛非常快速方便。但如果你需要客製化的資料處理、雙向同步、或是有特殊的商業邏輯,自己寫程式碼(或請專業工程師協助)能提供最大的彈性和效能,也能避免安裝過多外掛導致網站臃腫或產生衝突。

Q3: 串接 LINE、HubSpot 和 n8n 的主要差異在哪裡?

A3: 主要差異在於它們的「目的」和「彈性」。串接 LINE 主要是為了「即時通知」,是單向的訊息發送。串接 HubSpot 則是為了「資料同步」,將 WordPress 的數據(如聯絡人、訂單)寫入一個結構化的 CRM 系統中。而串接 n8n 則是為了「流程自動化」,WordPress 只是作為一個「觸發點 (Trigger)」,後續所有複雜的、跨越多個服務的流程都在 n8n 中完成,彈性最大。

Q4: 如何避免 API 請求拖慢我的 WordPress 網站速度?

A4: 這是個非常重要的問題!首先,避免在每次頁面載入時都發送 API 請求。只在必要的「事件」發生時(如用戶註冊、文章發佈)透過 Action Hook 觸發。其次,對於不需要立即得到回應的請求(如通知 n8n),可以在 wp_remote_post 中設定 'blocking' => false,讓請求在背景執行。對於更耗時或需要重試機制的任務,可以考慮整合 WordPress 的排程作業 (WP-Cron) 或更可靠的背景任務系統,如 Action Scheduler。

 
立即諮詢,索取免費1年網站保固