如何在Woocommerce中通过产品ID获取商品变体的采购价格?
在WooCommerce中通过产品ID获取商品变体的采购价格
核心逻辑
WooCommerce里商品变体的采购价格一般以产品元数据形式存储,需先定位到目标可变产品,再提取其下所有变体的对应元数据值。
代码实现
1. 获取指定可变产品下所有变体的采购价格
function get_all_variation_purchase_prices( $parent_product_id ) { // 获取父产品对象 $parent_product = wc_get_product( $parent_product_id ); // 校验是否为有效可变产品 if ( ! $parent_product || ! $parent_product->is_type('variable') ) { return []; } $variation_prices = []; // 获取所有可用变体数据 $available_variations = $parent_product->get_available_variations(); foreach ( $available_variations as $variation_data ) { $variation_id = $variation_data['variation_id']; $variation = wc_get_product( $variation_id ); // 提取采购价格(元数据键需根据实际配置调整,常见值:_purchase_price、_cost、_wc_cog_cost) $purchase_price = $variation->get_meta( '_purchase_price', true ); $variation_prices[$variation_id] = [ 'raw_price' => (float)$purchase_price, // 原始数值,用于计算总额 'formatted_price' => wc_price( $purchase_price ), // 格式化后价格,用于前端显示 'attributes' => $variation_data['attributes'] // 变体属性,区分不同规格 ]; } return $variation_prices; }
2. 通过变体ID直接获取单个变体的采购价格
function get_single_variation_purchase_price( $variation_id ) { $variation = wc_get_product( $variation_id ); if ( ! $variation || ! $variation->is_type('variation') ) { return false; } // 注意调整元数据键以匹配实际存储字段 return (float)$variation->get_meta( '_purchase_price', true ); }
关键注意事项
- 元数据键:不同场景下采购价格的存储键可能不同,比如使用
WooCommerce Cost of Goods插件时,键为_wc_cog_cost;如果是自定义添加的采购价格字段,需对应你设置的键值。 - 总额计算:对比销售与采购总额时,务必使用
raw_price的浮点数值,避免格式化后的字符串干扰计算逻辑。 - 销售数据获取:可通过
$product->get_total_sales()获取商品总销量,或结合订单数据统计销售总额,再与采购总额做对比。
内容的提问来源于stack exchange,提问作者user3678411
相关产品推荐
相关产品推荐

