Отображение корзины WooCommerce с вариантами

Я создаю пользовательскую тему и пытаюсь создать ссылку «Корзина», которая при наведении курсора будет отображать предварительный просмотр корзины WooCommerce.

Используя следующий код из этого поста: Получить название товара в корзине, количество, все детали woocommerce

<?php
    global $woocommerce;
    $items = $woocommerce->cart->get_cart();

        foreach($items as $item => $values) { 
            $_product =  wc_get_product( $values['data']->get_id() );
            //product image
            $getProductDetail = wc_get_product( $values['product_id'] );
            echo $getProductDetail->get_image(); // accepts 2 arguments ( size, attr )

            echo "<b>".$_product->get_title() .'</b>  <br> Quantity: '.$values['quantity'].'<br>'; 
            $price = get_post_meta($values['product_id'] , '_price', true);
            echo "  Price: ".$price."<br>";
            /*Regular Price and Sale Price*/
            echo "Regular Price: ".get_post_meta($values['product_id'] , '_regular_price', true)."<br>";
            echo "Sale Price: ".get_post_meta($values['product_id'] , '_sale_price', true)."<br>";
        }
?>

Мне удалось создать красивую небольшую демонстрацию тележки.

НО - Он не показывает правильный вариант продукта, который был добавлен в корзину. Он показывает только основное изображение продукта, а не изображение добавленной вариации.

Может ли кто-нибудь сказать мне, как получить и отобразить информацию о конкретных вариантах продукта, которые были добавлены в корзину?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
518
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуй это. Это будет работать как для обычных, так и для вариация сведений о продукте с изображением:

global $woocommerce;
$items = $woocommerce->cart->get_cart();

foreach ($items as $item => $values) {
    //get variation product id 
    $variation_id = $values['variation_id'];

    /* check if cart added item is variation product or not (checked by using variation id ) 
     if yes then variation product related information set to variables 
     Else normal product information will set to variables 
     i.e product_id common , product title , product image etc. 
     */
    if ($variation_id) {
        $product_id = $variation_id; // set commmon id ,later will use in get_post_meta() 
        $_product = new WC_Product_Variation($values['variation_id']);
        $product_image = $_product->get_image();
        $product_title = $_product->get_name();
    } else {

        $product_id = $values['product_id']; // set commmon id ,later will use in get_post_meta() 
        $_product = wc_get_product($values['data']->get_id());
        $getProductDetail = wc_get_product($values['product_id']);
        $product_image = $getProductDetail->get_image();
        $product_title = $_product->get_title();
    }

    echo $product_image; // product image depends on if else condition i.e variation or normal product
    echo "<b>" . $product_title . '</b>  <br> Quantity: ' . $values['quantity'] . '<br>';
    $price = get_post_meta($product_id, '_price', true);
    echo "  Price: " . $price . "<br>";
    /* Regular Price and Sale Price */
    echo "Regular Price: " . get_post_meta($product_id, '_regular_price', true) . "<br>";
    echo "Sale Price: " . get_post_meta($product_id, '_sale_price', true) . "<br>";
}

@IncipientInfo, так что это в определенной степени работает для меня. Возвращаемый идентификатор варианта равен 0, а SKU и идентификатор продукта являются родительскими. Я пропустил какой-то параметр в настройках WooCommerce?

mayvn 09.10.2019 04:02

вот изображение детали корзины отображать изображение...

$_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 );

$thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key );

if ( ! $_product->is_visible() ) {
            echo $thumbnail;
        } else {
                    $thumb = wp_get_attachment_image_src( get_post_thumbnail_id($_product->id), 'thumbnail' );
                        $cartimgsrc=UNAVAILABLEIMG;
                    if ($thumb[0]){
                        $cartimgsrc=$thumb[0];

                   $product = wc_get_product($cart_item['product_id']);
                   if ( $product && $product->is_type( 'variable' ) ) {


                            $product = new WC_Product_Variable( $product_id );
                            $variations = $product->get_available_variations();
                            foreach ( $variations as $variation ) {
                                if ($variation['variation_id'] == $cart_item['variation_id'] ){
                                    $cartimgsrc=$variation['image']['thumb_src'];
                                }   
                            }
                         }

                    }

                    echo "<a href='".$_product->get_permalink( $cart_item )."'> <img class='cartthumbimage' height='180px' width='180px' src='".$cartimgsrc."' /></a>";
                    //printf( '<a href = "%s">%s</a>', esc_url( $_product->get_permalink( $cart_item ) ), $thumbnail );
        }

Другие вопросы по теме