获取未分配给 WooCommerce 变体的购物车项目产品属性
Get cart item product attribute not assigned to variations in WooCommerce
对于所有有价值的产品,我有 2 个属性(DiscQuantity、Discount),稍后我将在购物车和结帐页面中使用这些属性来应用折扣,这些属性未分配给变体
我想获取这些属性中的值以将其传递给实现折扣的脚本
问题是 运行 这个脚本
add_action( 'woocommerce_cart_calculate_fees', 'progressive_discount_by_item_quantity', 10, 1 );
function progressive_discount_by_item_quantity( $cart_obj ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
foreach( $cart_obj->get_cart() as $cart_item_key => $item_values ){
$_product = apply_filters( 'woocommerce_cart_item_product', $item_values['data'] );
$foobar = $_product->get_attribute( 'DiscQuantity' );
?><pre><?php var_dump( $foobar ); ?></pre><?php
}}
//rest of Discount code
var_dump 显示此结果
字符串(0)“”
我继续调试并在 var_dumb 中打印 _product,它仅显示分配给变体的属性,我需要的两个属性丢失了
["attributes"]=>
array(3) {
["pa_size"]=>
string(1) "s"
["pa_color"]=>
string(3) "red"
["pa_fasttrack"]=>
string(6) "normal"
}
我的问题是如何在不将它们分配给变体的情况下获得这 2 个属性值?
当购物车项目是产品变体时,您将获得父变量产品对象,如下所示:
add_action( 'woocommerce_cart_calculate_fees', 'progressive_discount_by_item_quantity', 10, 1 );
function progressive_discount_by_item_quantity( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
foreach( $cart->get_cart() as $cart_item ){
// Get the variale product Object when it's a product variation
$product = $cart_item['variation_id'] > 0 ? wc_get_product($cart_item['product_id']) : $cart_item['data'];
$disc_qty = $product->get_attribute( 'DiscQuantity' );
echo '<pre class="custom">'. print_r( $disc_qty, true ) . '</pre>';
}
}
这次你不会得到一个空值。
代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
对于所有有价值的产品,我有 2 个属性(DiscQuantity、Discount),稍后我将在购物车和结帐页面中使用这些属性来应用折扣,这些属性未分配给变体 我想获取这些属性中的值以将其传递给实现折扣的脚本 问题是 运行 这个脚本
add_action( 'woocommerce_cart_calculate_fees', 'progressive_discount_by_item_quantity', 10, 1 );
function progressive_discount_by_item_quantity( $cart_obj ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
foreach( $cart_obj->get_cart() as $cart_item_key => $item_values ){
$_product = apply_filters( 'woocommerce_cart_item_product', $item_values['data'] );
$foobar = $_product->get_attribute( 'DiscQuantity' );
?><pre><?php var_dump( $foobar ); ?></pre><?php
}}
//rest of Discount code
var_dump 显示此结果 字符串(0)“”
我继续调试并在 var_dumb 中打印 _product,它仅显示分配给变体的属性,我需要的两个属性丢失了
["attributes"]=>
array(3) {
["pa_size"]=>
string(1) "s"
["pa_color"]=>
string(3) "red"
["pa_fasttrack"]=>
string(6) "normal"
}
我的问题是如何在不将它们分配给变体的情况下获得这 2 个属性值?
当购物车项目是产品变体时,您将获得父变量产品对象,如下所示:
add_action( 'woocommerce_cart_calculate_fees', 'progressive_discount_by_item_quantity', 10, 1 );
function progressive_discount_by_item_quantity( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
foreach( $cart->get_cart() as $cart_item ){
// Get the variale product Object when it's a product variation
$product = $cart_item['variation_id'] > 0 ? wc_get_product($cart_item['product_id']) : $cart_item['data'];
$disc_qty = $product->get_attribute( 'DiscQuantity' );
echo '<pre class="custom">'. print_r( $disc_qty, true ) . '</pre>';
}
}
这次你不会得到一个空值。
代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。