2017-08-03 74 views
2

我正试图在woocommerce购物车页面中获取特定属性值。 我在表格中制作了像这样的自定义列。
Woocommerce在购物车页面上获取特定属性值

<td class="product-color" data-title="<?php esc_attr_e('Color', 'woocommerce'); ?>"> 
         <?php 
          echo apply_filters('woocommerce_cart_item_price', WC()->cart->get_product_price($_product), $cart_item, $cart_item_key); 
         ?> 
        </td> 

        <td class="product-size" data-title="<?php esc_attr_e('Size', 'woocommerce'); ?>"> 
         <?php 
          echo apply_filters('woocommerce_cart_item_price', WC()->cart->get_product_price($_product), $cart_item, $cart_item_key); 
         ?> 
        </td> 

        <td class="product-price" data-title="<?php esc_attr_e('Price', 'woocommerce'); ?>"> 
         <?php 
          echo apply_filters('woocommerce_cart_item_price', WC()->cart->get_product_price($_product), $cart_item, $cart_item_key); 
         ?> 
        </td> 

当你看到所有的人都得到了产品价格。但我试图获得颜色和大小的属性。 我搜索,发现这个:

foreach(wc_get_product_terms($product->id, 'pa_size') as $attribute_value){ 
// Outputting the attibute values one by one 
echo $attribute_value . '<br>'; 

}

我试了一下这样的:

<?php 

          echo apply_filters('woocommerce_cart_item_color', WC()->$product->get_attributes($_product), 
          $cart_item, $cart_item_key); 
         ?> 

,但没有奏效

我最新的尝试:

$test = $_product->get_attributes(); 
foreach($test['pa_size']['options'] as $size){ 
          if ($size !== NULL) { 
         echo apply_filters('woocommerce_cart_item_price', $size , $cart_item, $cart_item_key); 
           var_dump($size); 

         } else { 
           echo "Not Specified"; 
          } 
         } 

,我得到这个结果INT(48)INT(47)

谁能帮我请。

+0

我在这里解决了这个问题: https://stackoverflow.com/questions/45520024/wordpress-woocommerce-product-attribute-return-key -not-value/45521680#45521680 –

回答

2

如何获取购物车页面中的属性和值?

请在下面添加功能function.php文件

<?php 
/** 
* WooCommerce: show all product attributes listed below each item on Cart page 
* ------ 
*/  

function wp_woo_cart_attributes($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 />'; 

    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'); 

      if (! empty($terms)) { 
       if (! is_wp_error($terms)) { 

        // 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). '<br />'; 

       } 
      } 

     } else { 

      // not a taxonomy 

      $out .= $name . ': '; 
      $out .= esc_html(implode(', ', $attribute->get_options())) . '<br />'; 
     } 
    } 
    echo $out; 
} 

add_filter('woocommerce_cart_item_name', 'wp_woo_cart_attributes', 10, 2); 
?> 
+0

感谢您的回复。但那不是我需要的。我不想在项目下面显示属性。我想将它们显示为表格栏。 –

相关问题