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

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

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

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

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

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

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

благодаря

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

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

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

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

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

Случай 1 – использование woocommerce_cart_item_name hook:

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

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

Это будет работать для 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; } 

Вы можете получить его через глобальную переменную $woocommerce 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>'; } } 

Я уже проверяю это.