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