9

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

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

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

但它仍然没有出现。

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

有人可以帮忙吗?

4

3 回答 3

9

针对 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 文件中。测试和工作。

于 2016-08-19T18:03:15.913 回答
3

这适用于 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;
}
于 2017-06-22T09:04:39.813 回答
0

您也可以通过全局变量获取它$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>';
    }
}

我已经检查过了。

于 2016-08-19T19:07:33.700 回答