Я пытаюсь показать описание продукта в моей корзине. Я попытался вставить этот код в шаблон 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 возможности (может быть еще больше …):
woocommerce_cart_item_name
hook, без редактирования какого-либо шаблона. В обоих случаях вам не нужно использовать в вашем коде цикл
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>'; } }
Я уже проверяю это.