如何在Woocommerce购物车页面将产品属性术语添加为body类
WooCommerce 5.8版本下将产品属性术语添加为购物车页面body类的解决方案
你参考的旧方案大多只适配了商品详情页场景,没有处理购物车多商品遍历逻辑,以下是适配WooCommerce 5.8的可用实现:
实现步骤
- 复制以下代码到你当前使用主题的
functions.php文件中,或者使用自定义代码片段插件插入:
add_filter( 'body_class', 'add_cart_product_attributes_to_body_class', 999 ); function add_cart_product_attributes_to_body_class( $classes ) { // 仅在购物车页面触发逻辑 if ( ! is_cart() ) return $classes; $cart_items = WC()->cart->get_cart(); $target_attribute = 'pa_your_custom_attribute'; // 替换为你实际的属性别名,前缀为pa_ foreach ( $cart_items as $item ) { $product = $item['data']; $term_values = $product->get_attribute( $target_attribute ); if ( $term_values ) { $terms = explode( ', ', $term_values ); foreach ( $terms as $term ) { $class_slug = sanitize_title( $term ); if ( ! in_array( $class_slug, $classes ) ) { $classes[] = $class_slug; } } } } return $classes; }
- 替换代码中的
pa_your_custom_attribute为你需要提取的产品属性别名,比如需要调用颜色属性就替换为pa_color。
注意事项
- 如果需要添加多个属性的术语到body类,可复制属性提取的逻辑段,修改目标属性别名即可
- 代码添加完成后需要清空购物车缓存,或者重新添加商品到购物车后再测试效果
- 如果需要针对变体属性生效,可把
$product = $item['data']后的逻辑做对应调整,获取变体属性值即可
内容的提问来源于stack exchange,提问作者stevesu-8bm
相关产品推荐
相关产品推荐

