2017-02-14 144 views
0

我想获得购物车中的产品的product_id,然后将其回显到一个类(自定义id),所以我可以单独设置项目的样式。添加产品ID到购物车产品分类

我有这样的:

<?php 
    foreach(WC()->cart->get_cart() as $cart_item){ 
     $product_id = $cart_item['product_id']; 
     break; 
    } 
    $product_id = apply_filters('woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key); 
?> 

<li id="mcitem-<?php echo esc_attr($cart_item_key); ?>" class="custom-<?php echo $product_id'; ?>"> 

这部分已经在微型cart.php模板,所以是li但没有阶级属性,这是我补充道。

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

我试图echo $product_id在类中不同的方法:

echo '$product_id'; 
echo esc_attr($product_id); 

测试了,并没有工作。然后我发现这个片段:

foreach(WC()->cart->get_cart() as $cart_item){ 
    $product_id = $cart_item['product_id']; 
    break; 
} 

(也测试了它没有休息,所以它已经内和环外测试)没有

然后我重复这两个回声,但还是空白回声结果( )。

我在这里做错了什么?

+0

你可以转储WC() - > cart-> get_cart()和$ cart_item [ 'PRODUCT_ID'(如果这些看似细小,然后还dump $ product_id调用apply_filters函数 – flynorc

+0

@flynorc - 你说的是var_dump()对吗?我该怎么做?我的php技巧我很弱。 –

+0

你会添加var_dump(WC() - > cart-> get_cart ));在foreach循环之前,你会在foreach循环中添加var_dump($ cart_item ['product_id']); – flynorc

回答

0

如果您想在购物车行中添加一个类,则可以过滤woocommerce_cart_item_class

/** 
* Changes the tr class of cart items. 
* 
* @param string $class 
* @param array $values 
* @param string $values_key 
* @return string 
*/ 
function so_42237701_cart_item_class($class, $values, $values_key) { 

    if (isset($values[ 'product_id' ])) { 
     $class .= ' custom-' . $values[ 'product_id' ]; 
    } 

    return $class; 
} 
add_filter('woocommerce_cart_item_class', 'so_42237701_cart_item_class', 10, 3); 

而对于小型车:

/** 
* Changes the tr class of items in the mini-cart. 
* 
* @param string $class 
* @param array $values 
* @param string $values_key 
* @return string 
*/ 
function so_42237701_mini_cart_item_class($class, $cart_item, $cart_item_key) { 

    if (isset($cart_item[ 'product_id' ])) { 
     $class .= ' custom-' . $cart_item[ 'product_id' ]; 
    } 

    return $class; 
} 
add_filter('woocommerce_mini_cart_item_class', 'so_42237701_mini_cart_item_class', 10, 3); 
+0

它从迷你车下来,从菜单,而不是车本身,但这仍然是有用的,因为我以后可能需要购物车。谢谢。你知道小车的修理吗? –

+0

对不起,我误解了你的问题。它看起来像迷你车有一个类似的过滤器称为['woocommerce_mini_cart_item_class'](https://github.com/woocommerce/woocommerce/blob/b81e56b597b44b920af0e90095baea655dcd2394/templates/cart/mini-cart.php#L46)。我会编辑,但它应该几乎相同。 – helgatheviking

+0

似乎没有工作。不适用任何课程。奇怪的。 –

相关问题