本篇文章更新時間:2021/03/01
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
剛好看到 WordPress 馬來西亞社團有人分享這個標題的概念做法,覺得有意思來筆記一下~
討論串連結: Facebook社團
如果需求這麼剛好是「每一張訂單有消費滿額,人工驗證後,下次消費就享有OO會員等級的購物折扣」,那這個功能很直接就提供了!
原理是通過 WooCommerce 完成訂單事件,來檢查訂單是否滿額,滿額的話就給該使用者提升會員等級。
情境上很簡單,但也是一種可能,能夠讓開發者再延伸去製作符合更複雜的操作。
目前這樣的設計有一些不足的地方,像是:
- 如果金流沒主動觸發完成訂單狀態的事件,當下第一單足額消費,馬上再下第二單的時候因為沒人工審查過,所以還不會有新會員等級套用。
- 訂單如有完成後才發生的退貨與取消等操作,這權限也要手動拿回來。
- 這樣的提升權限操作是看「單一訂單」,所以如果消費者分成好幾個單來下的話,每張訂單都不滿足條件,但全部訂單一起看是滿足的,有機會被客訴XD
不過既然說這是概念做法,當然就是留給有更延伸需求的人自己想辦法來開發補足拉~
要做到統計訂單消費金額與消費者關係的情境,勢必有延伸的開發,市面上的外掛不一定能滿足條件,那自己手動的時候也要想完整一點,免得上線後才出現一堆問題就糟糕了!
wc_get_customer_total_spent( $user_id ) 可以直接得知客戶一共花了多少錢,而且是統計已付款訂單的狀態,但是包含稅金和運費。
因此如果需要總金額不包含稅金和運費,就”一定” 需要重寫SQL.
反查 wc_get_customer_total_spent 後,就可以大概知道Woocommerce 如何抓出客戶花了多少錢。 因此我們修改一下SQL 變可以得到無稅金和運費的總花費了。
附上SQL.
SELECT SUM(pm2.meta_value – (pm3.meta_value + pm4.meta_value))
FROM $wpdb->posts as p
LEFT JOIN {$wpdb->postmeta} AS pm ON p.ID = pm.post_id
LEFT JOIN {$wpdb->postmeta} AS pm2 ON p.ID = pm2.post_id
LEFT JOIN {$wpdb->postmeta} AS pm3 ON p.ID = pm3.post_id
LEFT JOIN {$wpdb->postmeta} AS pm4 ON p.ID = pm4.post_id
WHERE pm.meta_key = ‘_customer_user’
AND pm.meta_value = ‘” . esc_sql( $user_id ) . “‘
AND p.post_type = ‘shop_order’
AND p.post_status IN ( ‘wc-” . implode( “‘,’wc-“, $statuses ) . “‘ )
AND pm2.meta_key = ‘_order_total’
AND pm3.meta_key = ‘_order_tax’
AND pm4.meta_key = ‘_order_shipping’
哦哦 感謝補充分享~