在Woocommerce购物车中显示特定产品ID的自定义缩略图

时间:2018-08-25 20:19:45

标签: php wordpress woocommerce thumbnails cart

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

        }
    }

};

enter image description here

请帮忙。

2 个答案:

答案 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;
  }
}