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 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 )

值得注意的修正和更新

  1. 更新 product_cat/tag 分類法範本檔案的名稱為 product-cat 和 product-tag  (#27736)..
  2. 在”商品頁面”設定中排除草稿頁面 (#27890).

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.phptaxonomy-product_cat.phptaxonomy-product_tag.php

WooCommerce 4.6 發佈!

WooCommerce 4.6 已經於 10/14 正式發佈,這是一個小版本的發佈,代表著向下相容之前的版本。

WooCommerce 4.6 的新功能

WooCommerce 4.6 包含了更新版本的 WooCommerce Admin (1.6.1) 和 WooCommerce Block (3.4.0) 以及以些修正和本地化的改進。

針對所有店家的新歡迎頁面

新的歡迎頁面是在 WooCommerce 4.3 推出的,當時只有針對新的商店。而在 WooCommerce 4.6 中,所有的店家都可以看到這個畫面。你可以在文件中找到更多的功能說明。

值得注意的修正和改進

1.針對有使用語言重音標記的語言改善國家名稱的排序方式 (#27416)

2.改善使用 Twenty Twenty 佈景主題時的 notice 樣式 (#27387)

3.現在可以在指定商品的稅率時使用包含非 ASCII 的字元 (#27615)

4.移除舊的設定工具 (setup wizard) (#26853)

如果你想知道更多的修正內容,可以參考 changelog

Filters 和 actions

在 WooCommerce 4.6 中新增了幾個 filters 和 actions:

Filters說明
woocommerce_return_to_shop_text可以用來改變在空的購物車頁面中的 “Return to shop” 按鈕的說明文字 (filter)
woocommerce_cart_item_required_stock_is_not_enough可以用來改變在購物車中檢查商品庫存的行為 (filter)
woocommerce_should_send_no_stock_notification可以用來讓開發者針對特定商品來忽略寄送無庫存的信件通知 (filter)
woocommerce_after_order_details可以用來新增額外的資料在 order 內容之後 (action)

資料庫改變

這個版本沒有任何的資料庫改變

WooCommerce 4.5 發佈!

WooCommerce 4.5 已經於 9/9 正式發布,這是一個小版本的發佈,代表向下相容於之前的版本。

這個版本是一個相對小規模的更新,專注在整體程式的穩定和相容性。WooCommerce 團隊根據之前的發佈流程中學習並改進了整體的測試流程。而這個改變可以確保之後的發佈可以更加的可靠和穩定。

WooCommerce 4.5 有什麼新功能?

新的 onboarding 導覽

圖片來源:WooCommerce

當你第一次瀏覽 WooCommerce 首頁畫面時,你將會看到一個指引來提供你更多資訊 (#4890)

REST API

這個版本將原本在另一個源碼庫(#27100)的 REST API 合併進入 WooCommerce 核心中。之後任何關於 REST API 的問題,都會被記錄在 WooCommerce 核心的源碼庫。

Filters

這個版本增加了5個 filters

Filters說明
woocommerce_cart_product_cannot_add_another_message
可以顯示多於1個商品被放入購物車中的訊息
woocommerce_cart_product_out_of_stock_message可以顯示一個商品沒有庫存的訊息
woocommerce_cart_product_not_enough_stock_message可以顯示一個商品的庫存不足的訊息
woocommerce_file_download_method檔案下載方式
woocommerce_query_for_reserved_stock可以改變讀取商品保留庫存的查詢

執得注意的修正和改善

1.當你啟用 “在輸入地址之前隱藏運送成本” 的功能時,現在在你完全輸入地址之前運費會完全隱藏 (#27143)

2.如果你取消了一個狀態為 pending 的訂單,這個訂單使用的折價券會被釋出 (#27179)

3.當你手動建立訂單時,如果變化商品沒有指定貨號 (sku) 則會回傳父商品的貨號 (#27171)

4.折價券的代碼現在會將 HTML 的標籤以編碼的方式儲存。這提升了安全性來確保不會將沒有過濾的輸入儲存起來。這將會有一個資料庫的 migration 當你安裝 4.5 時,所以這不是一個會造成任何錯誤的改變。 (#27140)

你可以在 changelog 中看到所有的修正和改善。

資料庫改變

這個版本不需要任何核心資料庫的改變。但是,4.3 的版本新增了一個新的資料庫表格,所以如果你是從 4.3 版本之前更新的,請確保 WordPress 使用者有權限新增資料庫表格到資料庫中。

WordPress 最低版本需求

這個版本雖然沒有改變最低的 PHP 版本需求,但提升了最低的 WordPress 版本至 5.3。

WooCommerce 4.4 發佈

WooCommerce 4.4 在 8/18 正式發布了,這是一個小版本的發佈,代表著會相容於之前的版本。

WooCommerce 4.4 有什麼新功能?

WooCommerce 區塊更新

這個版本包含了許多 bug 修正和許多區塊的更新,一些值得注意的更新包含:

1.更新樣式讓所有的區塊看起來更佳一致,同時移除 dashicon 的 class。

2.區塊會使用商品圖片裁切的設定

3.只用在前端的 js 檔不會於後台編輯器載入

Coupon 管理位置變動

圖片來源:WooCommerce

Filters and actions

Filters說明
woocommerce_product_cross_sells_products_heading可改變交叉銷售商品內容的標題
woocommerce_enable_nocache_headers允許不要設定 no-cache header來增加速度
woocommerce_duplicate_product_exclude_meta
新增一個參數 $existing_meta_keys
plugins_update_check_locales參數 $locales 的預設值改為包含所有 locales
woocommerce_translations_updates_for_{$plugin_name}可以改變註冊自動翻譯更新的外掛
woocommerce_bacs_accounts新增一個參數 $order_id
新增和改變的 filter
Action說明
woocommerce_order_note_added在新增訂單註解後執行

移除 WooCommerce 後台行銷 (Marketing Hub)選單

WooCommerce 4.1 新增了一個 [行銷] (Marketing Hub) 選單在後台。

WooCommerce marketing hub
Marketing Hub。圖片來源:WooCommerce

目前這個選單頁面中包含了三個項目:

  • 已安裝的外掛
  • 推薦的外掛
  • WooCommerce 知識庫

而這些外掛都是 WooCommerce 官方網站上的外掛。如果你不希望看到推薦外掛內容,可以在後台 WooCommerce > 設定 > 進階 > WooCommerce.com 來關掉顯示推薦外掛內容。

關閉 WooCommerce 建議外掛

不過有些人覺得這些內容幫助不大,希望整個選單都不要顯示,那麼你可以透過以下的 Filter 來隱藏選單。

<?php

add_filter( 'woocommerce_marketing_menu_items', '__return_empty_array' );

請把以上的程式放到子佈景主題的 functions.php 中,若你不知道怎麼放,可以透過 Code Snipptets 這類的外掛,來在後台新增程式碼區段。不過要注意的是,這個頁面中所放的內容未來可能還會有所變動,所以未來可能還是會需要打開它。

參考資料: