Получите идентификатор продуктов корзины на странице оформления заказа WooCommerce, чтобы отобразить изображения продуктов

Я использую woocommerce на сайте, над которым работаю, и хочу отобразить миниатюру текущего продукта в верхней части страницы оформления заказа, чтобы пользователь мог посмотреть, что он собирается купить.

Однако я не могу найти способ сделать это.

Самое близкое, что я нашел, это использовать WC::cart->get_cart(), но это выводит список всех продуктов.

Как я могу этого добиться?

Спасибо


person Avishay28    schedule 05.08.2016    source источник
comment
Добро пожаловать в StackOverflow. Пожалуйста, включите больше кода, чтобы дать контекст вашего вопроса.   -  person FishStix    schedule 06.08.2016
comment
Добро пожаловать в Stackoverflow, чего вы действительно хотите? на странице оформления заказа есть только те товары, которые находятся в вашей корзине. Очистите вопрос, пожалуйста   -  person Farrukh Faizy    schedule 06.08.2016
comment
@LoicTheAztec, ты прав, последние два дня я был немного занят. Ваше решение работает, и я принял ответ, спасибо   -  person Avishay28    schedule 07.08.2016


Ответы (1)


Да, возможно написать пользовательскую функцию.

Чтобы отобразить эти изображения в начале страницы оформления заказа сразу после темы вашего заголовка, используйте этот код:

add_action('woocommerce_before_checkout_form', 'displays_cart_products_feature_image');
function displays_cart_products_feature_image() {
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        $product = $cart_item['data'];
        if(!empty($product)){
            // $image = wp_get_attachment_image_src( get_post_thumbnail_id( $product->ID ), 'single-post-thumbnail' );
            echo $product->get_image();

            // to display only the first product image uncomment the line below
            // break;
        }
    }
}

Этот фрагмент кода находится в файле function.php вашей активной дочерней темы или темы

Вы можете изменить свойства изображений, добавив некоторые параметры в get_image() функция.

Этот код протестирован и полностью функционален


ДРУГИЕ ИСПОЛЬЗОВАНИЯ. Вы также можете использовать это:

1). Со следующими другими checkout WooCommerce хуками (заменив первую строку в коде фрагмента одним из этих):

• Перед сведениями о клиенте:

add_action('woocommerce_checkout_before_customer_details', 'displays_cart_products_feature_image');

• После сведений о клиенте:

add_action('woocommerce_checkout_after_customer_details', 'displays_cart_products_feature_image');

• Перед просмотром заказа:

add_action('woocommerce_checkout_before_order_review', 'displays_cart_products_feature_image');

2). Непосредственно внутри ваших шаблонов woocommerce (этот фрагмент кода находится в файле function.php файл вашей активной дочерней темы или темы):

function displays_cart_products_feature_image() {
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        $product = $cart_item['data'];
        if(!empty($product)){
            // $image = wp_get_attachment_image_src( get_post_thumbnail_id( $product->ID ), 'single-post-thumbnail' );
            echo $product->get_image();

            // to display only the first product image uncomment the line below
            // break;
        }
    }
}

Затем вы просто вставите один из них в файл шаблона:

  • внутри HTML-кода: <?php displays_cart_products_feature_image(); ?>
  • внутри кода PHP: displays_cart_products_feature_image();

Справка:

person LoicTheAztec    schedule 06.08.2016
comment
$cart_item['data'] уже имеет объект WC_Product, поэтому не нужно повторно создавать экземпляр. - person rram; 29.10.2017
comment
@rram Да, вы правы, спасибо… я обновил код (это был старый ответ) - person LoicTheAztec; 29.10.2017
comment
Круто +1, я тоже не уверен, с какого момента (какая версия) WooCommerce начала предоставлять экземпляр продукта в $cart_item['data'] - person rram; 29.10.2017
comment
@rram Это уже работало 2 года назад, но я только что сделал небольшую ошибку… Еще раз спасибо :) - person LoicTheAztec; 29.10.2017