/**
* Basic details of logged in user
*
* @return array current user data.
*
*/
public function get_clients_details() {
return [
'ip' => \WC_Geolocation::get_ip_address(),
'agent' => wc_get_user_agent(),
'referer' => wc_get_raw_referer(),
];
}
WooCommerce
WooCommerce Subscriptions 判斷購物車是否包含訂閱型商品
WC_Subscriptions_Cart::cart_contains_subscription()
woocommerce help tip
<span class="woocommerce-help-tip" title="'. __( 'If order creation failed, you could create order manually.') .'"></span>
WooCommerce Admin Settings Custom Attributes
To set custom attributes, you could use custom_attributes as array key.
This is an example taken from WooCommerce.

You can see now the input field has a new attribute name ‘multiple’ and with the value ‘multiple’

WooCommerce Order CRUD
$order->update_meta_data();
$order->save();
這邊的 update_meta_data,可能會有點誤解,實際上 update_meta_data 並沒有牽涉任何資料庫的操作,而是將 order 物件內的資料進行更新,最後還是要呼要 $order->save() 來將資料存到資料庫中
https://woocommerce.com/document/developing-using-woocommerce-crud-objects/
https://woocommerce.com/posts/extending-crud-data-stores/
[WooCommerce] 如何移除付款方式 icon
許多使用的金流外掛都會額外顯示該付款方式的 icon,不過有些外掛並沒有提供關閉的功能。不過還是可以透過 WooCommerce 內建的 filter 來移除 icon。
例如我們想要移除 Ry WooCommerce Tools 的綠界超商代碼付款,可以使用 woocommerce_gateway_icon 這個 filter。這個 filter 有兩個參數,一個是 $icon,是原本 icon 的網址,另一個是 $id,代表著付款方式的 id,每一個付款方式的 id 皆不同。在下面的例子中,判斷當 $id 等於 ry_ecpay_cvs 時,就回傳空字串,這樣就不會顯示付款方式的 icon 了。
function lwd_remove_ecpay_icon( $icon, $id ) {
if ( $id === 'ry_ecpay_cvs' ){
return '';
} else {
return $icon;
}
}
add_filter( 'woocommerce_gateway_icon', 'lwd_remove_ecpay_icon', 10, 2 );
至於要如何知道付款方式的 id 呢?首先你可以檢視外掛的原始程式碼,每一個付款方式的實作都必須要指定 id ,這個 id 是不能重複的。你可以在 ry-woocommerce-tools/woocommerce/gateways/ecpay/includes/ecpay-gateway-cvs.php 中找到 $this->id,這個 id 就是該付款方式的 id。

若你不知道如何檢視程式碼,也可以透過瀏覽器的開發者工具來檢視網頁的原始碼。在結帳頁面開啟 chrome 的開發者工具,並使用檢視工具來檢視元件,點擊檢視工具後,點擊你要檢視的付款方式,底下就會跳到該付款方式的原始碼。你可以看到每一個付款方式都會帶有一個 CSS class,例如 payment_method_ry_ecpay_cvs,其中ry_ecpay_cvs 就是該付款方式的 id。

綠界金流各付款方式付款期限
綠界金流如果不是即時付款 (超商付款、ATM虛擬帳號付款) 都會有一個付款期限,使用者在這個期限內完成付款都可以。以下說明幾個非即時付款的付款方式的付款期限及 API 設定參數。
超商付款
CVS:以分鐘為單位
BARCODE:以天為單位
參數:StoreExpireDate (超商繳費截止時間)
若未設定此參數,CVS 預設為 10080分鐘(7 天);BARCODE 預設為 7 天。
若需設定此參數,請於建立訂單時將此參數送給綠界。
CVS 帶入數值不可超過 86400 分鐘,超過時一律以 86400 分鐘計(60 天)
例:08/01 的 20:15 分購買商品,繳費期限為 7 天,表示 8/08 的 20:15 分前您必須前往超商繳費。
ATM
參數:ExpireDate
若需設定最長 60 天,最短 1 天。未設定此參數則預設為 3 天
注意事項:以天為單位
資料來源:綠界
WooCommerce 數位/可下載商品設定
數位商品日益盛行,任何東西都可以販售,例如 PDF、外掛、佈景主題、PSD 檔等都可以販售,在 WooCommerce 中你可以透過設定虛擬或是可下載商品來販售這樣類型的商品。
那虛擬商品跟可下載商品的差異在哪邊呢?
根據 WooCommerce 的說明,可下載商品可以跟實體商品一樣設定庫存,這可以讓你同時販售數位商品和實體商品。如果你希望販售的可下載商品不需要擁有實體商品的特性,那麼請同時勾選虛擬商品。
WooCommerce 官網有提供一份很完整的功能介紹和檔案下載設定的說明,如果你要販售的是可下載商品,建議看一下這份文件。
https://woocommerce.com/document/digital-downloadable-product-handling/
檔案名稱設定
在 WooCommerce 的可下載商品設定中,可以設定檔案名稱的命名方式。如果你不希望別人猜到你的下載網址,可以將這個選項勾選起來。但如果你已經有設定適當的檔案目錄就不可以不用這個選項。

WooCommerce 訂單日期
$order->get_date_paid(); //付款日期
$order->get_date_completed();//完成日期
//回傳的物件為 WC_DateTime (繼承 PHP DateTime)
$thedate = new WC_DateTime();
$thedate->date('Y/m/d');
參考資料:
https://woocommerce.github.io/code-reference/classes/WC-DateTime.html
WooCommerce 4.7 發佈
WooCommerce 4.7 已經於 11/10 正式發佈,這是一個小版本的發佈,代表著向下相容之前的版本。
因為黑色星期五即將到來,所以 WooCommerce 團隊將這個版本的修改範圍縮小,同時專注在整體的穩定和相容性。
WooCommerce 4.7 包含了哪些新功能?
WooCommerce 4.7 的發佈包含了更新的 WooCommerce Admin (1.6.3) 和 WooCommerce Blocks ( 3.5.0和 3.6.0 )
值得注意的修正和更新
Filters and actions
Filters | 說明 |
woocommerce_should_send_low_stock_notification | 決定目前商品是否要觸發低庫存通知 |
範本檔案改變
檔案 | 說明 |
content-product-cat.php | 新檔案用來取代 content-product_cat.php (#27736) |
taxonomy-product-cat.php | 新檔案用來取代 taxonomy-product_cat.php (#27736) |
taxonomy-product-tag.php | 新檔案用來取代 taxonomy-product_tag.php (#27736) |
請注意 WooCommerce 仍然支援
,content-product_cat.php
taxonomy-product_cat.php
和 taxonomy-product_tag.php