将产品说明添加到Woocommerce中的购物车商品

时间:2017-10-13 14:30:09

标签: php wordpress woocommerce checkout cart

我很难找到解决这个问题的简单方法我正在使用Woocommerce的One-page-checkout插件。

我的客户希望在购物车商品的产品标题旁边添加产品说明。
有关如何操作代码以显示描述的任何想法?

这就是我的实际情况:

enter image description here

我认为这个插件只会隐藏在某处的描述,但我无法在代码中的任何位置找到它。

2 个答案:

答案 0 :(得分:1)

有两种方法可以做到(为产品和产品变化做准备):

1)将自定义功能挂钩在 woocommerce_get_item_data 操作挂钩 (最佳方式)

add_filter( 'woocommerce_get_item_data', 'customizing_cart_item_data', 10, 2 );
function customizing_cart_item_data( $cart_data, $cart_item ) {

    $custom_items = array();
    $label = __( 'Description', 'woocommerce' );

    // Get the product description
    $description = $cart_item['data']->get_description();

    // For product variations when description is empty
    if( $cart_item['data']->is_type('variation') && empty( $description ) ){
        // Get the parent variable product object
        $product = wc_get_product( $cart_item['data']->get_parent_id() );
        // Get the variable product description
        $description = $product->get_description();
    }

    // If product or variation description exists we display it
    if( ! empty( $description ) ){
        $custom_items[] = array(
            'key'      => $label,
            'display'  => $description,
        );
    }

    // Merging description and product variation attributes + values
    if( ! empty( $cart_data ) ) $custom_items = array_merge( $custom_items, $cart_data );

    return $custom_items;
}

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

...或......

2)将自定义函数隐藏在 woocommerce_cart_item_name 过滤器钩子中:

add_filter( 'woocommerce_cart_item_name', 'customizing_cart_item_data', 10, 3);
function customizing_cart_item_data( $item_name, $cart_item, $cart_item_key ) {
    // The label
    $label = __( 'Description', 'woocommerce' );

    // Get the product description
    $description = $cart_item['data']->get_description();

    // For product variations when description is empty
    if( $cart_item['data']->is_type('variation') && empty( $description ) ){
        // Get the parent variable product object
        $product = wc_get_product( $cart_item['data']->get_parent_id() );
        // Get the variable product description
        $description = $product->get_description();
    }

    if( ! empty( $description ) ){
        $item_name .= '<p class="item-description" style="margin:12px 0 0;">
            <strong>'.$label.'</strong>: <br>'.$description.'
        </p>';
    }
    return $item_name;
}

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

代码在Woocommerce 3+上进行测试并且有效。

答案 1 :(得分:0)

您可以在位于主题文件夹根目录中的functions.php中尝试此代码。不确定它是否仍然有效,因为我不再在Wordpress开发中活跃。 [未测试]

更新:这可能适用于WooCommerce 3 +

使用woocommerce_cart_item_name hook:

add_filter( 'woocommerce_cart_item_name', 'cart_description', 20, 3);
function cart_description( $name, $cart_item, $cart_item_key ) {
    // Get the corresponding WC_Product
    $product_item = $cart_item['data'];

    if(!empty($product_item)) {
        // WC 3+ compatibility
        $description = $product_item->get_description();
        $result = __( 'Description: ', 'woocommerce' ) . $description;
        return $name . '<br>' . $result;
    } else
        return $name;
    }
}