2017-08-03 77 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

感謝您的回覆。但那不是我需要的。我不想在項目下面顯示屬性。我想將它們顯示爲表格欄。 –

相關問題