Отображение корзины WooCommerce с вариациями - PullRequest
1 голос
/ 21 июня 2019

Я создаю собственную тему и пытаюсь создать ссылку «Корзина», которая при наведении на нее отображает предварительный просмотр корзины 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>";
        }
?>

Мне удалось создать симпатичный маленький дисплей корзины.

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

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

1 Ответ

1 голос
/ 21 июня 2019

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

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>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...