在Woocommerce中,我想用个性化图像更改特定的购物车缩略图。我可以更改图像,但是它可以更改所有购物车项目缩略图。
我只想更改特定产品ID的图像。
我该怎么做?
这是我正在使用的代码:
add_filter( 'woocommerce_cart_item_thumbnail', 'change_woocommerce_cart_item_thumbnail', 10, 3 );
function change_woocommerce_cart_item_thumbnail( $thumbnail, $cart_item,
$cart_item_key ) {
$cart = WC()->cart->get_cart();
foreach( $cart as $cart_item ){
$product = wc_get_product( $cart_item['product_id'] );
if($cart_item['product_id'] == 75){
echo 'New Image Here';
}
}
};
请帮忙。
答案 0 :(得分:1)
您不需要foreach循环,因为$cart_item
已作为函数中的参数包含在内。以下代码将适用于所有产品类型,并允许您在购物车页面中使用特定产品的自定义缩略图:
add_filter( 'woocommerce_cart_item_thumbnail', 'change_woocommerce_cart_item_thumbnail', 20, 3 );
function change_woocommerce_cart_item_thumbnail( $thumbnail, $cart_item, $cart_item_key ){
// HERE your targeted product ID
$targeted_id = 75;
if( $cart_item['product_id'] == $targeted_id || $cart_item['product_id'] == $targeted_id ){
echo 'New Image Here';
}
}
代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。
答案 1 :(得分:0)
LoicTheAztec的解决方案很棒,但是除了与if语句中的条件匹配的缩略图外,它将所有缩略图保留为空白。它让我90%的路程都在那里。为了克服这一点,我添加了...
echo $thumbnail;
添加该缩略图(在if块之外)后,您可以看到所有缩略图以及自定义缩略图。 LoicTheAztec解决方案还具有“或”运算符,但是因为它使用的条件与“或”之前的第一个条件完全相同,所以不需要。也许它只是您需要满足多个条件的方案的占位符。
在这种情况下,switch语句似乎是更好的选择。它使您可以以一种易于阅读的方式轻松自定义任意数量的拇指。这是对我有用的最终代码...
add_filter( 'woocommerce_cart_item_thumbnail', 'aw_change_woocommerce_cart_item_thumbnail', 20, 3 );
function aw_change_woocommerce_cart_item_thumbnail( $thumbnail, $cart_item, $cart_item_key ){
$theProductID = $cart_item['product_id']; // save product ID into a variable
switch ($theProductID) {
case 47056:
//this is a gift membership which needs a different shaped thumbnail than other products;
echo '<img width="73" height="46" src="/wp-content/uploads/2020/05/giftcard-thumb.jpg" class="attachment-woocommerce_thumbnail size-woocommerce_thumbnail" alt="gift card">';
break;
case 47149:
//this is a gift card which also needs a different shaped thumbnail than other products;
echo '<img width="73" height="46" src="/wp-content/uploads/2020/05/giftcard73x58.jpg" class="attachment-woocommerce_thumbnail size-woocommerce_thumbnail" alt="gift card">';
break;
default:
echo $thumbnail;
}
}