Woocommerce: Показать описание варианта продукта на странице корзины

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

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

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

Но это все еще не обнаруживается.

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

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

Спасибо

7

Решение

ОБНОВЛЕНИЕ СОВМЕСТИМОСТИ для 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

Другие решения

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

Вы можете получить его через глобальную переменную $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
По вопросам рекламы [email protected]