1 回答

TA貢獻1862條經驗 獲得超6個贊
實際上wc_get_products()唯一可用的過濾器是'return' => 'ids'在使用WC_Product_Query.
解決方案是使用帶有 WordPress WPDB類的直接 SQL 查詢,因為它是在產品查詢中獲取所需數(shù)據(jù)的更輕松、最有效的方法。
在以下查詢中,我們必須排除可變產品,因為它們有多個價格(每個變體一個):
global $wpdb;
$products_query = $wpdb->get_results( "
SELECT p.ID AS id,
p.post_title AS name,
Max(CASE WHEN pm.meta_key = '_price' AND p.ID = pm.post_id THEN pm.meta_value END) AS price
FROM {$wpdb->prefix}posts p
INNER JOIN {$wpdb->prefix}postmeta pm
ON p.ID = pm.post_id
WHERE p.post_type = 'product'
AND p.post_status = 'publish'
AND p.post_parent != 0
GROUP BY p.ID
ORDER BY p.ID ASC;
" );
// Testing raw output
echo '<pre>'; print_r( $products_query ); echo '</pre>';
包括產品變化 (選項):
如果要包含可變產品的產品變體,則應替換此行:
WHERE p.post_type = 'product'
經過:
WHERE p.post_type IN ('product','product_varation')
我不建議您在您的情況下使用wc_get_products()or get_posts() (WP_Query):
因為您還將獲得可變產品(根據(jù)其變化具有多種價格)
因為它更重(即使您只查詢'ids'字段,只獲取產品 ID),因為您必須為每個產品設置數(shù)據(jù),進行多個數(shù)據(jù)庫查詢。
- 1 回答
- 0 關注
- 227 瀏覽
添加回答
舉報