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



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

目前,我有一个产品定制器,允许客户创建自己的膳食计划/复合。

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

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

对于第一部分,我能够使用以下代码(从这里(检索购物车内商品的产品属性名称:

$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 列

现状示例

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

第 2 步是通过总结产品之间共有的属性来更进一步。例如,如果产品 1 和产品 2 都有"fats"属性,值分别为"2"和"3",那么我希望打印出"5"(常见产品属性的总和(。

任何见解都非常感谢。我的编程知识有限,并且正在学习这个项目。

下面是可能对您有所帮助的示例代码

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;
}

最新更新