WooCommerce Product 使用自訂參數查詢

目錄

當要查詢 WooCommerce 商品的時候,我偏好使用 wc_get_products 來取得商品列表,跟直接使用 wp_query 比起來,前者提供的參數可以用更簡潔的寫法來依照商品的條件來查詢,像是售價、銷售量或是庫存量等等。

我的需求是要依照商品的販售期限進行查詢,我用 ACF 增加了一個商品下架日期欄位叫做 end_date,當超過這個期限時商品就會自動下架,因此我要篩選出 end_date 符合當天日期的商品來改變商品的販售狀態。

但與 wp_query 的用法不同,wc_get_products 並未提供自訂欄位的參數,需要透過勾點 woocommerce_product_data_store_cpt_get_products_query 來加入,在勾點中要先判斷查詢的參數是否有帶入,有的話再用 meta_query 加入查詢。

實作如下:首先先在 wc_get_products 的參數帶入 end_date,並給一個 yes 的值作為稍後查詢的判斷:

$args        = array(
	'type'     => 'variable',
	'return'   => 'ids',
	'end_date' => 'yes',
);
$product_ids = wc_get_products( $args );

然後在勾點 woocommerce_product_data_store_cpt_get_products_query 裡面進行 end_date 的檢查,有存在的話就加入 meta_query 來修改查詢結果,這樣就能正確篩選出符合條件的商品:

add_filter('woocommerce_product_data_store_cpt_get_products_query',function(){
	if ( 'yes' === $query_vars['end_date'] ) {
		$query['meta_query'][] = array(
			array(
				'key'     => 'end_date',
				'value'   => date( 'Y/m/d' ),
				'compare' => '=',
				'type'    => 'DATE',
			),
		);
	}
	return $query;
})

目錄

賴俊吾 / Oberon Lai
賴俊吾 / Oberon Lai

現為全職 WordPress 工程師,網站開發經歷 11 年,專攻前端工程與 WordPress 佈景主題、外掛客製化開發

訂閱電子報

Hi,我是 Oberon,我會固定在每週五早上發送接案心得以及與 WordPress 相關的電子報,同時也會分享一些實用的開發知識,讓你在 WordPress 的接案路上不孤單!

覺得文章對你有幫助再幫我鼓個掌吧!

相關文章

WooCommerce Notify 支援 Fluent Form 表單發送通知

很開心終於有客戶跟我許願新功能了,第一次加入的完整功能是讓使用 Fluent Forms 表單外掛的站長,能在表單送出後以手機簡訊...

WooCommerce 結帳頁自訂信用卡欄位

最近在接一家有站內付功能的金流商,因此需要在結帳頁整合信用卡資訊欄位,為了避免使用者輸入錯誤,會需要驗證卡號長度、到期日格式、安全...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

專注於分享 WordPress 開發、接案技巧、專案管理等自由工作者必備知識與心得

© 2023 想點創意科技有限公司

想點創意科技有限公司 | 統一編號 90516823
Designed by Hend Design | 隱私權政策

訂閱電子報

Hi,我是 Oberon,我會固定在每週五早上發送接案心得以及與 WordPress 相關的電子報,同時也會分享一些實用的開發知識,讓你在 WordPress 的接案路上不孤單!