Woocommerce: Отображение описания вариантов товара на странице корзины


Я пытаюсь отобразить свое описание разновидности товара в своей корзине. Я попытался вставить этот код в cart.php шаблон:

if ( $_product->is_type( 'variation' ) ) {echo $_product->get_variation_description();}

Следуя этой документации https://docs .woocommerce.com/document/template-structure/

Но он все еще не появляется.

Не уверен, что я здесь делаю не так.

Может ли кто-нибудь помочь в этом?

Спасибо

Author: LoicTheAztec, 2016-08-19

3 answers

ОБНОВЛЕНИЕ СОВМЕСТИМОСТИ для версии WooCommerce 3+

Начиная с WooCommerce 3, get_variation_description() теперь устарел и заменен методом WC_Product get_description().

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

  1. Отображение вариации описание с использованием woocommerce_cart_item_name крюк, без редактирования какого-либо шаблона.
  2. Отображение описания вариации с помощью cart.php шаблон.

В обоих случаях вам не нужно использовать в своем коде foreach цикл, как отвечалось ранее, потому что он уже существует. Таким образом, код будет более компактным.

Случай 1 - использование woocommerce_cart_item_name крюк:

add_filter( 'woocommerce_cart_item_name', 'cart_variation_description', 20, 3);
function cart_variation_description( $name, $cart_item, $cart_item_key ) {
    // Get the corresponding WC_Product
    $product_item = $cart_item['data'];

    if(!empty($product_item) && $product_item->is_type( 'variation' ) ) {
        // WC 3+ compatibility
        $descrition = version_compare( WC_VERSION, '3.0', '<' ) ? $product_item->get_variation_description() : $product_item->get_description();
        $result = __( 'Description: ', 'woocommerce' ) . $descrition;
        return $name . '<br>' . $result;
    } else
        return $name;
}

В этом случае описание просто отображается между заголовком и значения атрибутов вариации.

Этот код входит в function.php файл вашей активной дочерней темы (или темы) или также в любом файле плагина.


Случай 2 - Использование cart/cart.php шаблон ( Обновление в соответствии с вашим комментарием).

Вы можете выбрать, где вы хотите отобразить это описание (2 варианта):

  • После названия
  • После названия и значений атрибутов вариации.

Так что вы будете вставьте этот код в cart.php шаблон вокруг строки 86 или 90 в зависимости от вашего выбора:

// Get the WC_Product
$product_item = $cart_item['data'];

if( ! empty( $product_item ) && $product_item->is_type( 'variation' ) ) {
    // WC 3+ compatibility
    $description = version_compare( WC_VERSION, '3.0', '<' ) ? $product_item->get_variation_description() : $product_item->get_description();
    if( ! empty( $description ) ) {
        // '<br>'. could be added optionally if needed
        echo  __( 'Description: ', 'woocommerce' ) . $description;;
    }
}

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

 8
Author: LoicTheAztec, 2017-08-12 23:34:03

Это будет работать для WC 3.0

    add_filter( 'woocommerce_cart_item_name', 'cart_variation_description', 20, 3);
function cart_variation_description( $title, $cart_item, $cart_item_key ) {
    $item = $cart_item['data'];

    if(!empty($item) && $item->is_type( 'variation' ) ) {
        return $item->get_name();
    } else
        return $title;
}
 3
Author: Ger Groot, 2017-06-22 09:04:39

Вы можете получить его через глобальную переменную $woocommerce также -

global $woocommerce;
$cart_data = $woocommerce->cart->get_cart();
foreach ($cart_data as $value) {
    $_product = $value['data'];
    if( $_product->is_type( 'variation' ) ){
        echo $_product->id . '<br>';
    }
}

Я уже проверил это.

 0
Author: anik4e, 2016-08-19 19:07:33