Woocommerce-获取购物车中产品的属性值

时间:2020-01-08 04:54:44

标签: php wordpress woocommerce attributes product

我正在使用Woocommerce来建立一个销售餐饮计划的电子商务页面。

目前,我有一个product customizer,可让客户创建自己的用餐计划/组合。

我正在尝试将一些值传递给插件的小部件。具体来说,我正在尝试检索购物车中当前存在的产品属性的名称和值。

产品属性显示每种复合产品的营养信息。当客户将产品添加到购物车中时,我希望填写营养信息(产品属性)。

对于第一篇文章,我能够使用以下代码(来自here)来检索购物车商品的产品属性名称:

 $item_data = $cart_item['data'];
 // print_r($item_data);
  $attributes = $item_data->get_attributes();
  //print_r($attributes);
foreach ( $attributes as $attribute => $attribute_term ) {
$term = get_term_by('slug', $attribute_name, $attribute);    
echo wc_attribute_label( $attribute ).': '.$term->term;
} 

这仅显示属性的名称。正是我需要的第1列。

但是,我想在第2列中显示属性值,但是我不确定如何操纵以上代码来实现此目的。目前,我已将相同的代码传递到第2列

Example of current situation

因此,上述第1步将是打印与第1列中的产品属性名称相对应的产品属性值。

第2步将通过总结产品之间共有的属性使这一点更进一步。例如,如果产品1和产品2都具有“脂肪”属性,其值分别为“ 2”和“ 3”,那么我希望打印出“ 5”(常见产品属性的总和)。

任何见识都将不胜感激。我的编程知识有限,并且在学习该项目时一直在学习。

1 个答案:

答案 0 :(得分:0)

以下示例代码可能会为您提供帮助

add_filter( 'woocommerce_cart_item_name', 'customizing_cart_item_data', 10, 3);
function customizing_cart_item_data( $item_name, $cart_item, $cart_item_key ) {
    $term_names = array();

    // Get product categories
    $terms = wp_get_post_terms( $cart_item['product_id'], 'product_cat' );

    if( count($terms) > 0 ){
        foreach( $terms as $term ) $term_names[] = $term->name;

        $item_name .= '<p class="item-category" style="margin:12px 0 0; font-size: .875em;">
            <strong class="label">' . _n( 'Category', 'Categories', count($terms), 'woocommerce' ) . ': </strong>
            <span class="values">' . implode( ', ', $term_names ) . '</span>
        </p>';
    }
    return $item_name;
}