在 Woocommerce 购物车页面上显示特定产品属性

Posted

技术标签:

【中文标题】在 Woocommerce 购物车页面上显示特定产品属性【英文标题】:Display specific product attribute on Woocommerce cart page 【发布时间】:2020-12-13 21:55:36 【问题描述】:

我想在 Woocommerce 购物车页面和结帐页面上的表格中产品名称下方显示特定产品属性。这在某种程度上可能与

custom_display_attribute

?

【问题讨论】:

【参考方案1】:

您可以使用以下过滤器在购物车页面上显示属性。参考链接:https://isabelcastillo.com/show-woocommerce-product-attributes-on-cart-page

/**
* WooCommerce: show all product attributes, separated by comma, on cart page
*/
function isa_woo_cart_attribute_values( $cart_item, $cart_item_key ) 
  
    $item_data = $cart_item_key['data'];
    $attributes = $item_data->get_attributes();
      
    if ( ! $attributes ) 
        return $cart_item;
    
      
    $out = $cart_item . '<br />';
      
    $count = count( $attributes );
      
    $i = 0;
    foreach ( $attributes as $attribute ) 
   
        // skip variations
        if ( $attribute->get_variation() ) 
             continue;
        
   
        $name = $attribute->get_name();          
        if ( $attribute->is_taxonomy() ) 
 
            $product_id = $item_data->get_id();
            $terms = wp_get_post_terms( $product_id, $name, 'all' );
               
            // get the taxonomy
            $tax = $terms[0]->taxonomy;
               
            // get the tax object
            $tax_object = get_taxonomy($tax);
               
            // get tax label
            if ( isset ( $tax_object->labels->singular_name ) ) 
                $tax_label = $tax_object->labels->singular_name;
             elseif ( isset( $tax_object->label ) ) 
                $tax_label = $tax_object->label;
                // Trim label prefix since WC 3.0
                $label_prefix = 'Product ';
                if ( 0 === strpos( $tax_label,  $label_prefix ) ) 
                    $tax_label = substr( $tax_label, strlen( $label_prefix ) );
                
            
            $out .= $tax_label . ': ';
 
            $tax_terms = array();              
            foreach ( $terms as $term ) 
                $single_term = esc_html( $term->name );
                array_push( $tax_terms, $single_term );
            
            $out .= implode(', ', $tax_terms);
              
            if ( $count > 1 && ( $i < ($count - 1) ) ) 
                $out .= ', ';
            
          
            $i++;
            // end for taxonomies
      
         else 
  
            // not a taxonomy
              
            $out .= $name . ': ';
            $out .= esc_html( implode( ', ', $attribute->get_options() ) );
          
            if ( $count > 1 && ( $i < ($count - 1) ) ) 
                $out .= ', ';
            
          
            $i++;
              
        
    
    echo $out;

add_filter( 'woocommerce_cart_item_name', isa_woo_cart_attribute_values, 10, 2 );

【讨论】:

显示所有属性并格式化它们,这是我不想要的。我只需要一个特定的属性和标签,它不应该被格式化。 @mark 你有所有属性,然后你可以根据你的要求显示任何属性。

以上是关于在 Woocommerce 购物车页面上显示特定产品属性的主要内容,如果未能解决你的问题,请参考以下文章

隐藏产品价格并禁用 Woocommerce 中特定产品类别的添加到购物车

在 Woocommerce 购物车页面上显示特定产品属性

在 WooCommerce 中最后对特定产品类别的购物车项目进行排序

WooCommerce 中特定产品类别的最低购物车数量

在 WooCommerce 购物车中隐藏特定产品类别的缩略图

如果订单包含来自特定产品类别的商品,则为 WooCommerce 订单号添加前缀