2015-11-03 83 views
1

我試圖在購物車頁面上顯示每種產品的類別。我沒有太多的知識的PHP。我使用此代碼:獲取產品類別並將其顯示在購物車頁面woocommerce

$terms = get_the_terms($product_id, 'product_cat'); 
foreach ($terms as $term) { 
    $product_cat = $term->name; 
} 
echo $product_cat ; 

爲了測試這個代碼,我把一個<div>woocommerce/cart/cart.php剛下foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item)循環和它的工作,但它表明我只有每個產品,而不是所有類別的最後一類。

我想顯示所有的類別,而不是在頁面的開頭,但在小計和總數之前的運輸信息之後。

我試圖把這個代碼放在cart-totals.php的新的<tr><th>Some Title</th><td>[PHP Code here]</td></tr>中,但沒有顯示任何結果。我認爲它是因爲代碼從foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item)中消失。任何幫助,將不勝感激,謝謝

[編輯]

我不知道這是否是做的最好的方式,但這種代碼似乎在cart-total.php

<?php 
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) { 

$_product = apply_filters('woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key); 

$product_id = apply_filters('woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key); 

$terms = get_the_terms($product_id, 'product_cat'); 
$product_cat = array(); 

foreach ($terms as $term) { 
    $product_cat[] .= $term->name; 
} 

echo implode(', ', $product_cat); 

?> 

由於工作: )

+2

在你的foreach循環中,每次循環運行時都覆蓋$ product_cat變量,這就是爲什麼你只能看到最後一個類。 – tobros91

+0

謝謝,但我該如何補救? – colapsnux

回答

1

$terms = get_the_terms($product_id, 'product_cat'); 
$product_cat = array(); 

foreach ($terms as $term) { 
    $product_cat[] .= $term->name; 
} 

echo implode(', ', $product_cat); 

這種嘗試將放於所有類別n數組,並且可以將它作爲一個以逗號分隔的字符串輸出。

相關問題