1. Elementor Pro 的做法:純粹的 AJAX 端點
- API 端點:
/?wc-ajax=remove_from_cart
- 觸發方式:由 JavaScript 主動發起一個
POST
AJAX 請求,並將cart_item_key
作為資料傳送。 - 後端處理:由 WooCommerce 的
WC_AJAX::remove_from_cart()
函式處理。 - 設計目的:這是專為 AJAX 功能設計的「現代化」方法。它被設計用來處理像迷你購物車這種不需要刷新整個頁面的元件。它會移除商品,然後回傳一個包含更新後購物車片段 (fragments) 的 JSON 物件,讓前端的 JavaScript 可以直接更新畫面。
- 誰在使用:Elementor Pro、大多數現代主題的頁首迷你購物車。
2. 結帳頁面範本的做法:傳統的 GET 連結
- API 端點:
/checkout?remove_item=[KEY]&_wpnonce=[NONCE]
- 觸發方式:由 PHP 範本(
cart.php
或review-order.php
)中的wc_get_cart_remove_url()
函式產生一個標準的<a href="...">
GET 連結。 - 後端處理:由
WC_Form_Handler::remove_cart_item()
函式處理。 - 設計目的:這是 WooCommerce 的「傳統」方法,被設計用來處理整個頁面的互動。它的預期行為是:
- 使用者點擊連結。
- 瀏覽器跳轉到這個 URL。
- 後端移除商品。
- 後端將整個頁面重定向回購物車頁面 (
wp_safe_redirect( wc_get_cart_url() )
)。
- 誰在使用:預設的購物車頁面、預設的結帳頁面訂單總覽。