Woocommerce:在购物车页面上显示产品变化描述

时间:2016-08-19 17:49:21

标签: php wordpress woocommerce cart variations

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

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

遵循此文档https://docs.woocommerce.com/document/template-structure/

但它还没有出现。

不确定我在这里做错了什么。

有人可以帮忙吗?

由于

3 个答案:

答案 0 :(得分:8)

  

WooCommerce第3版的更新兼容性

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

  

要在购物车中产品商品变体说明 (过滤变体产品类型条件),您有 2种可能性(可能更多) ...):

  1. 使用 woocommerce_cart_item_name 挂钩显示变体说明,无需修改任何模板。
  2. 使用cart.php模板显示变体描述。
  3.   

    在这两种情况下,您都不需要在代码中使用 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 模板(根据您的评论更新。< / p>

    您可以选择要显示此说明的位置(2个选项):

    • 标题后
    • 标题和变体属性值之后。

    因此,您将根据您的选择在第86行或第90行的cart.php模板上插入此代码:

    // 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;;
        }
    }
    

    所有代码都经过测试并且功能齐全

答案 1 :(得分: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;
}

答案 2 :(得分: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>';
    }
}

我已经检查过了。