WooCommerce外掛終極指南與程式碼詳解:從安裝到自定義開發

3 分钟阅读时间
2026-03-16
2026-06-04
2,751
通过下方链接进行购物时,您无需支付额外费用,我就能获得佣金。.

WooCommerce 安裝與基礎配置

WooCommerce 的安裝過程雖然簡單,但正確的初始配置是構建穩定電商網站的基石。首先,您需要一個執行 PHP 7.4 或更高版本、並安裝了 WordPress 的伺服器環境。透過 WordPress 後臺的“外掛”>“安裝外掛”頁面,搜尋“WooCommerce”並點選安裝啟用即可。啟用後,系統會自動啟動“設定嚮導”,引導您完成商店的基本設定。

在設定嚮導中,您需要依次完成:設定商店所在地、貨幣和單位;配置支付方式(如PayPal、Stripe或銀行轉賬);設定運費計算規則(如免費送貨、固定運費或基於重量/地址的實時費率);並推薦安裝一些必要的擴充套件,如 WooCommerce Payments 或本地化外掛。完成嚮導後,您會進入 WooCommerce 的核心設定面板。這裡有幾個關鍵部分需要仔細配置:“常規”選項中可設定銷售地點和稅率計算;“產品”選項中可定義度量單位、商品評論和庫存管理;“結賬”頁面是配置所有支付閘道器和結賬流程的地方;“配送”選項則用於管理發貨區域、方法和包裝。

一個常被忽視但至關重要的步驟是配置永久連結。在 WordPress 的“設定”>“固定連結”中,確保不要使用“樸素”結構,推薦使用“文章名”或自定義結構,這有利於商品頁面的 SEO。同時,在 WooCommerce 的“高階”設定標籤頁中,您需要為各種頁面(如購物車、結賬、我的賬戶等)分配對應的 WordPress 頁面,這些頁面在外掛安裝時已自動建立。

推荐阅读 WooCommerce客製化開發指南:從入門到進階的完整實戰教學

商店基礎資訊設定

商店的基礎資訊設定主要集中在 WordPress 自定義器和 WooCommerce 常規設定中。您需要確保商店地址、客服郵箱和電話號碼準確無誤,這些資訊將出現在訂單通知、發票和頁尾中。此外,在“常規”設定的“貨幣選項”中,可以設定貨幣格式,例如人民幣(¥123.00)或美元($123.00)。

UltaHost WordPress 主機
30天退款保證,無限頻寬與資料庫,免費的 DDoS 防護,購買3年優惠50%

支付與配送閘道器整合

支付閘道器是電商的命脈。WooCommerce 內建了多種支付方式,如 WC_Gateway_BACS(銀行轉賬)、WC_Gateway_CHEQUE(支票支付)和 WC_Gateway_COD(貨到付款)。要啟用 Stripe 或 PayPal 等高階閘道器,通常需要安裝獨立外掛並配置 API 金鑰。例如,配置 Stripe 時,您需要在相應設定頁面填入釋出的金鑰和秘鑰金鑰。

配送設定同樣關鍵。您可以在“配送區域”中為不同國家或地區建立獨立的運費規則。例如,為中國大陸設定一個區域,並新增“免費送貨”、“統一費率”和“本地取貨”等多種方法。透過使用 woocommerce_shipping_init 鉤子,開發者甚至可以建立完全自定義的配送方法類。

核心功能與資料管理

WooCommerce 將所有的電商資料都整合到了 WordPress 的自定義文章型別和分類法中。產品被儲存為 product 文章型別,而訂單則對應 shop_order 文章型別。理解這種資料模型是進行高階自定義開發的前提。

產品管理是核心中的核心。WooCommerce 支援四種產品型別:simple(簡單產品)、grouped(分組產品)、external(外部/關聯產品)和 variable(可變產品)。可變產品允許您為同一商品設定不同的屬性(如顏色、尺寸)及其對應的價格、庫存和 SKU。在後臺編輯產品時,您會用到一系列元資料框,用於管理庫存 SKU、價格、庫存狀態、配送資訊以及關聯的商品相簿。

推荐阅读 什么是 WooCommerce 及其核心架构?

訂單管理後臺提供了完整的銷售概覽。每個訂單都是一個包含豐富元資料的 shop_order 帖子,記錄了客戶資訊、購買的商品、價格、支付狀態和訂單備註歷史。狀態管理至關重要,預設狀態包括 pending(等待付款)、processing(正在处理中)on-hold(暫停)和 completed(已完成)。您可以使用 wc_get_order_statuses 函式獲取所有狀態,並透過 woocommerce_register_shop_order_post_statuses 過濾器註冊自定義狀態。

產品型別與屬性管理

產品屬性是組織複雜商品目錄的利器。您可以在“產品”>“屬性”中建立全域性屬性,如“顏色”或“尺寸”。然後,在編輯可變產品時,將這些屬性用於建立“屬性組合”,並針對每個組合(如“紅色-大號”)設定獨立的變體資料。在程式碼層面,可以透過 WC_Product_Variable 類和其 get_available_variations() 方法來獲取並操作所有變體資訊。

訂單與客戶資料處理

使用WooCommerce WC_Order 類來封裝訂單資料。透過這個類,您可以程式設計式地建立或更新訂單。例如,以下程式碼展示瞭如何建立一個新訂單並新增商品:

hostng.com 共享主机
高效能,配备 AMD EPYC CPU、NVMe SSD 存储和 LiteSpeed,全天候 24 小时专业内部支持,先进的安全措施包括 SSL、暴力破解、恶意软件和 DDoS 防护,节省高达 731 TB/月的带宽成本。
// 创建一个新订单对象
$order = wc_create_order();

// 通过商品ID获取商品对象并添加到订单中
$product = wc_get_product(123);
$order->add_product($product, 2); // 数量为2

// 设置客户地址
$order->set_address(array(
    'first_name' => '张',
    'last_name'  => '三',
    'email'      => '[email protected]',
    'phone'      => '13800138000',
), 'billing');

// 计算总额并保存
$order->calculate_totals();
$order->save();

客戶資料則與 WordPress 使用者(WP_User)深度繫結。WooCommerce 透過 wc_get_customer_order_count 以及 wc_get_customer_total_spent 等函式擴充套件了使用者能力。

主題整合與模板覆蓋

WooCommerce 與主題的整合度決定了商店的前端體驗。它採用強大的模板系統,所有前端顯示檔案(如商品列表、單個商品頁、購物車)都位於外掛目錄的 /templates/ 資料夾中。為了在不修改核心外掛檔案的前提下自定義這些模板,您需要將它們覆蓋到您的主題中。

正確的方法是:在您的活動主題目錄下,建立一個名為 woocommerce 的資料夾。然後,將您想修改的 WooCommerce 模板檔案從外掛目錄複製到這個新資料夾中,並在此副本上進行修改。例如,要修改單個商品頁面的結構,您需要複製 plugins/woocommerce/templates/single-product.phpthemes/your-theme/woocommerce/single-product.php。WooCommerce 會優先載入主題中的模板檔案。

推荐阅读 WooCommerce 终极建站指南:从零开始打造你的电商帝国

除了覆蓋整個檔案,您還可以使用動作鉤子(Action Hooks)和過濾器鉤子(Filter Hooks)在特定位置插入或修改內容。例如,woocommerce_before_single_product_summary 鉤子在商品摘要資訊之前觸發,是新增自定義橫幅廣告的理想位置。

自定義模板檔案結構

WooCommerce 的模板檔案具有清晰的層次結構。以商品迴圈為例,archive-product.php 是商店主頁面模板,它會呼叫 content-product.php 來渲染每個商品。透過覆蓋這些檔案,您可以徹底改變商品在列表中的展示方式,例如更改佈局為網格或列表,或新增自定義徽章。

InterServer 共享主机
虚拟主机的月费为1TB+5TB,价格为2.50美元。首月优惠价为1TB+5TB,价格为0.1美元。优惠码为"tryinterserver"。平台提供461个云应用脚本,一键安装便捷。

使用鉤子進行功能擴充套件

鉤子是 WooCommerce 擴充套件的脊柱。動作鉤子允許您“執行”程式碼,例如在購物車表格後新增一個自定義資訊框:

add_action('woocommerce_after_cart_table', 'my_custom_cart_message');
function my_custom_cart_message() {
    echo '<div class="custom-notice">购物满500元包邮!</div>';
}

過濾器鉤子則允許您“修改”資料。例如,使用 woocommerce_add_to_cart_fragments 過濾器可以動態更新迷你購物車的內容:

add_filter('woocommerce_add_to_cart_fragments', 'update_mini_cart_count');
function update_mini_cart_count($fragments) {
    $fragments['div.cart-count'] = '<div class="cart-count">' . WC()-&gt;cart-&gt;get_cart_contents_count() . '</div>';
    return $fragments;
}

高階自定義與開發實踐

當內建功能和鉤子無法滿足需求時,就需要進行更深度的自定義開發。這包括建立自定義產品型別、編寫專屬的支付或配送閘道器,以及透過 REST API 與外部系統整合。

建立自定義產品型別需要擴充套件 WC_Product 類。首先,您需要定義一個繼承自它的新類,並註冊這個產品型別。例如,建立一個名為“預訂”的產品類:

class WC_Product_Booking extends WC_Product {
    public function __construct($product) {
        parent::__construct($product);
        $this->product_type = 'booking';
    }
    // 在这里添加自定义方法和属性,如 get_booking_dates()
}
// 将新类注册到工厂
add_filter('woocommerce_product_class', 'register_booking_product_class', 10, 2);
function register_booking_product_class($classname, $product_type) {
    if ($product_type == 'booking') {
        $classname = 'WC_Product_Booking';
    }
    return $classname;
}

WooCommerce REST API 為移動應用或外部管理系統提供了強大的介面。您可以使用 API 來管理產品、訂單、客戶等幾乎所有資料。訪問 API 需要先在後端的“WooCommerce”>“設定”>“高階”>“舊版API”中啟用並建立API金鑰(Consumer Key & Consumer Secret)。然後就可以使用類似以下的端點進行呼叫:GET /wp-json/wc/v3/products 來獲取產品列表。

開發自定義閘道器

一個自定義支付閘道器是一個擴充套件了 WC_Payment_Gateway 類的 PHP 類。您需要在這個類中定義閘道器的ID、標題、描述、支付欄位,並實現 process_payment 方法來完成支付邏輯。開發完成後,需要透過 woocommerce_payment_gateways 過濾器將其新增到可用閘道器列表中。

與外部服務進行API整合

WooCommerce 提供了豐富的鉤子來與 ERP、CRM 或物流系統對接。例如,當訂單狀態變更為“已完成”時,會觸發 woocommerce_order_status_completed 動作鉤子。您可以掛接一個函式到這個鉤子上,將訂單資料推送到您的庫存管理系統:

add_action('woocommerce_order_status_completed', 'sync_order_to_erp');
function sync_order_to_erp($order_id) {
    $order = wc_get_order($order_id);
    $data = array(
        'order_id' => $order->get_id(),
        'total'    => $order->get_total(),
        // ... 准备其他数据
    );
    // 使用 wp_remote_post 将 $data 发送到外部 API
}

总结

WooCommerce 不僅僅是一個外掛,更是一個功能完備、高度可擴充套件的電子商務開發框架。從簡單的安裝配置到深度的自定義開發,它透過清晰的模板系統、豐富的鉤子(Actions & Filters)以及面向物件的資料模型,為開發者提供了無限的可能性。成功構建一個 WooCommerce 商店的關鍵在於:紮實的基礎配置確保商店穩定執行;深入理解其產品、訂單資料模型;熟練運用模板覆蓋和鉤子進行前端定製;並掌握透過自定義類、閘道器和API整合來滿足獨特業務需求的能力。遵循這些最佳實踐,您將能夠打造出強大、高效且完全符合業務邏輯的線上商店。

常见问题解答(FAQ)

如何修改“加入購物車”按鈕的文字?

您可以使用 woocommerce_product_add_to_cart_text 過濾器或 woocommerce_product_single_add_to_cart_text 過濾器來修改按鈕文字。例如,以下程式碼將單個商品頁的按鈕文字改為“立即購買”:

add_filter('woocommerce_product_single_add_to_cart_text', 'change_single_add_to_cart_text');
function change_single_add_to_cart_text() {
    return '立即购买';
}

對於歸檔頁面(商品列表),請使用 woocommerce_product_add_to_cart_text 過濾器,並需要在函式內判斷產品型別。

如何為特定產品類別新增自定義欄位?

您需要結合使用 WooCommerce 的產品分類鉤子和 WordPress 的術語元資料 API。首先,使用 product_cat_add_form_fields 以及 product_cat_edit_form_fields 動作在分類新增/編輯頁面輸出欄位。然後,使用 created_term 以及 edit_term 動作來儲存欄位值到 term_meta。最後,您可以在模板檔案中使用 get_term_meta 來獲取並顯示這個值。

我的自定義模板修改為什麼沒有生效?

請按以下步驟排查:首先,確認您將模板檔案複製到了正確的主題路徑:your-theme/woocommerce/ 下,且目錄結構與原外掛模板一致。其次,清除所有快取,包括瀏覽器快取、WordPress 物件快取以及任何伺服器端快取(如OPcache)。最後,檢查您的主題 functions.php 是否正確地聲明瞭 WooCommerce 支援:add_theme_support('woocommerce');。如果問題依舊,嘗試暫時切換到預設主題(如Storefront)以排除主題相容性問題。

如何程式設計式地建立一個 WooCommerce 可變產品?

您需要使用 WC_Product_Variable 類。基本步驟是:建立產品物件並設定基礎屬性;建立和新增全域性屬性(如顏色);為這些屬性建立具體的屬性組合(即變體);最後為每個變體建立獨立的 WC_Product_Variation 物件,設定其價格、庫存等特有屬性,並關聯到主產品。這是一個多步驟的過程,通常涉及 wp_set_object_terms, set_attributes, 和 save 等方法。