WooCommerce:还在购物车项目上显示产品变体描述

Posted

技术标签:

【中文标题】WooCommerce:还在购物车项目上显示产品变体描述【英文标题】:WooCommerce: Display also product variation description on cart items 【发布时间】:2016-12-26 23:15:02 【问题描述】:

我正在尝试在我的购物车中显示我的产品变体描述。我尝试在 cart.php 模板中插入此代码:

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

按照此文档https://docs.woocommerce.com/document/template-structure/

但它仍然没有出现。

不知道我在这里做错了什么。

有人可以帮忙吗?

【问题讨论】:

嗨@LoicTheAztec,非常感谢您的帮助。我今天刚试过,它对我不起作用。我的编程知识非常有限,所以我提前为愚蠢的错误道歉。我在我的 cart.php 中插入了您的代码(请参阅 github.com/jessica16002002/Tega/blob/master/cart.php)。有没有机会你可以看看并帮助我找出问题所在?谢谢!! 【参考方案1】:

为 WooCommerce 版本 3 及更高版本更新

自 WooCommerce 3 以来,get_variation_description() 现在已弃用并由 get_description() WC_Product 方法取代。

要获取您的产品项目变体描述 (过滤变体产品类型条件),您可以改用以下挂钩函数:

// Cart page (and mini cart)
add_filter( 'woocommerce_cart_item_name', 'cart_item_product_description', 20, 3);
function cart_item_product_description( $item_name, $cart_item, $cart_item_key ) 
    if ( ! is_checkout() ) 
        if( $cart_item['variation_id'] > 0 ) 
            $description = $cart_item['data']->get_description(); // variation description
         else 
            $description = $cart_item['data']->get_short_description(); // product short description (for others)
        

        if ( ! empty($description) ) 
            return $item_name . '<br><div class="description">
                <strong>' . __( 'Description', 'woocommerce' ) . '</strong>: '. $description . '
            </div>';
        
    
    return $item_name;


// Checkout page
add_filter( 'woocommerce_checkout_cart_item_quantity', 'cart_item_checkout_product_description', 20, 3);
function cart_item_checkout_product_description( $item_quantity, $cart_item, $cart_item_key ) 
    if( $cart_item['variation_id'] > 0 ) 
        $description = $cart_item['data']->get_description(); // variation description
     else 
        $description = $cart_item['data']->get_short_description(); // product short description (for others)
    

    if ( ! empty($description) ) 
        return $item_quantity . '<br><div class="description">
            <strong>' . __( 'Description', 'woocommerce' ) . '</strong>: '. $description . '
        </div>';
    

    return $item_quantity;

现在描述只是显示在标题和变体属性值之间(如果有的话)

代码进入活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。

【讨论】:

@LoicTheAztec 。感谢您提供此代码(案例 1)。这在最新的 WC (3.x) 中是否仍然有效?我试过了,它只是显示“描述:”,没有别的。我很想让这个工作。 @LoicTheAztec 谢谢!只是为了更新,对于案例 1,替换 $item->get_variation_description();使用 $item->get_description();适用于(现在)当前版本的 WooCommerce。 @jason 再次感谢,我已经增强和更新了代码。现在也与 WooCommerce 版本 3+ 兼容。【参考方案2】:

这适用于 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>';
    

我已经查过了。

【讨论】:

这是旧的弃用方式......自 +/- 1 年以来的新方式是 WC()-&gt;cart 语法,不需要 $global woocommerce;...... 检查 woocommerce 模板或核心文件中的代码,你会见。

以上是关于WooCommerce:还在购物车项目上显示产品变体描述的主要内容,如果未能解决你的问题,请参考以下文章

php [显示产品属性存档链接]在产品页面上显示WooCommerce产品属性存档链接,位于添加到购物车b的正下方

php [显示产品属性存档链接]在产品页面上显示WooCommerce产品属性存档链接,位于添加到购物车b的正下方

php [显示产品属性存档链接]在产品页面上显示WooCommerce产品属性存档链接,位于添加到购物车b的正下方

在 Woocommerce 中的产品自定义循环上启用 Ajax 添加到购物车按钮

Woocommerce 自定义添加到购物车循环

在 WooCommerce 购物车中获取购物车项目的产品 ID