Woocommerce: Отображение описания вариантов товара на странице корзины
Я пытаюсь отобразить свое описание разновидности товара в своей корзине. Я попытался вставить этот код в cart.php
шаблон:
if ( $_product->is_type( 'variation' ) ) {echo $_product->get_variation_description();}
Следуя этой документации https://docs .woocommerce.com/document/template-structure/
Но он все еще не появляется.
Не уверен, что я здесь делаю не так.
Может ли кто-нибудь помочь в этом?
Спасибо
3 answers
ОБНОВЛЕНИЕ СОВМЕСТИМОСТИ для версии WooCommerce 3+
Начиная с WooCommerce 3, get_variation_description()
теперь устарел и заменен методом WC_Product
get_description()
.
Чтобы получить описание вашего варианта товара в корзине ( условие фильтрации вариантов типа продукта), у вас есть 2 возможности (может быть даже больше...):
- Отображение вариации описание с использованием
woocommerce_cart_item_name
крюк, без редактирования какого-либо шаблона. - Отображение описания вариации с помощью 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;;
}
}
Весь код протестирован и полностью функционален
Это будет работать для 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
также -
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>';
}
}
Я уже проверил это.