我正在使用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列
因此,上述第1步将是打印与第1列中的产品属性名称相对应的产品属性值。
第2步将通过总结产品之间共有的属性使这一点更进一步。例如,如果产品1和产品2都具有“脂肪”属性,其值分别为“ 2”和“ 3”,那么我希望打印出“ 5”(常见产品属性的总和)。
任何见识都将不胜感激。我的编程知识有限,并且在学习该项目时一直在学习。
答案 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;
}