当前位置: 首页 > 知识库问答 >
问题:

更新Woocommerce中数量变化的购物车项目自定义数据

戚飞
2023-03-14

我在woocommerce产品中添加了一个名为“捐赠”的自定义字段,用于存储单个产品的捐赠。然后,我添加了名为“line_捐赠”的行项目元。现在,我需要更新“行_捐赠”上的产品数量变化和点击更新购物车按钮后,如产品总的变化。

function cfwc_add_custom_field_item_data( $cart_item_data, $product_id, $variation_id, $quantity ) {
    // Add the item data
    $cart_item_data['line_donation'] = get_post_meta($product_id,'donation', true);
    return $cart_item_data;
}
add_filter( 'woocommerce_add_cart_item_data', 'cfwc_add_custom_field_item_data', 10, 4 );

/**
 * Display the custom field value in the cart
 * @since 1.0.0
 */
function cfwc_cart_item_name( $name, $cart_item, $cart_item_key ) {
    if( isset( $cart_item['line_donation'] ) ) {
        $name .= sprintf(
            '<p>%s</p>',
            esc_html( $cart_item['line_donation'] )
        );
    }
    return $name;
}
add_filter( 'woocommerce_cart_item_name', 'cfwc_cart_item_name', 10, 3 );

function add_line_donation_to_order( $item, $cart_item_key, $values, $order ) {
    foreach( $item as $cart_item_key=>$values ) {
        if( isset( $values['line_donation'] ) ) {
            $item->add_meta_data( __( 'line_donation', 'woocommerce' ), $values['line_donation'], true );
        }
    }
}
add_action( 'woocommerce_checkout_create_order_line_item', 'add_line_donation_to_order', 10, 4 );

欢迎任何帮助。

共有1个答案

孙洋
2023-03-14

您只需在最后两个函数中做一些更改,如下所示:

add_filter( 'woocommerce_cart_item_name', 'cfwc_cart_item_name', 10, 3 );
function cfwc_cart_item_name( $name, $cart_item, $cart_item_key ) {
    if( isset( $cart_item['line_donation'] ) )
        $name .= '<p>' . $cart_item['line_donation'] * $cart_item['quantity'] . '</p>';

    return $name;
}

add_action( 'woocommerce_checkout_create_order_line_item', 'add_line_donation_to_order', 10, 4 );
function add_line_donation_to_order( $item, $cart_item_key, $values, $order ) {
    foreach( $item as $cart_item_key=>$values ) {
        if( isset( $values['line_donation'] ) ) {
            $item->add_meta_data( __( 'line_donation', 'woocommerce' ), $values['line_donation'] * $values['quantity'], true );
        }
    }
}

代码进入活动子主题(或活动主题)的function.php文件。测试和工作。

 类似资料:
  • 在woocommerce单页产品上,我创建了一个自定义字段。我希望它的值在订单生效时存储在订单元中。经过几个小时的研究,我还没有找到任何解决办法来结束!但我相信我已经很接近了。。。 这是我的实际代码: 以下是我目前掌握的情况: 这就是我想要的: 如何将此自定义字段数据保存为订单元数据,以便在“自定义字段”元框中显示值。 任何帮助都很感激。

  • 我正在跟随Laravel的购物车教程,但即使我已经将他的代码复制到了点子上,它也不像教程中那样工作。每次你点击一个产品时,购物车的数量应该会增加,但事实并非如此。 我正在学习Max Schwarzmueller的“Laravel购物车”教程,您可以在youtube上找到:https://www.youtube.com/watch?v=56TizEw2LgI 我是php、laravel和sessio

  • 问题内容: 我正在为wordpress创建一个自定义woocommerce集成主题。 我在顶部有一个Blob,用于显示购物车中的商品总数。我想使用Jquery更新此Blob(不重新加载页面),因此能够通过获取当前商品中的商品数量来增加商品数量blob,并为每次点击将其增加+1,问题是“添加到购物车”具有一个选项,可以选择要添加到购物车的商品数量。因此,如果我选择3个项目并单击按钮,则斑点仅增加1。

  • 问题内容: 我正在尝试使用以下功能更改购物车中的产品价格: 它在WooCommerce版本2.6.x中正常运行,但在版本3.0+中不再正常运行 如何使其在WooCommerce 3.0+版中正常工作? 谢谢。 问题答案: 更新 (2018年9月) 使用 WooCommerce 3.0+版本, 您需要: 要改用 钩子。 要改用WC_Cart 方法 改用WC_product 方法 这是代码: 该代码在

  • 我正在尝试根据购物车中的产品数量向购物车添加一个名为(送货费)的产品。 购物车示例: 产品A(数量5) 产品B(数量2) 产品C(数量4) 送货费(数量3)**这是3,因为这是添加送货费产品之前添加到购物车中的应计数的行项目总数。 我的代码有问题: 它总是返回一个更高的数字。我认为这是计算每个产品的数量,而不是实际的产品项目。 任何帮助都将不胜感激!

  • 问题内容: 我有上面的代码。 如果我在cart_item上运行print_r,我将得到一个多维数组: 我如何只获得product_id? 我试过$ test = 没用 问题答案: 要获取 foreach循环中的每个购物车商品(对于简单产品): 如果是可变产品,请获取 : 或在两种情况下 ( Woocommerce 3+中 的 Object在哪里) : 更新: 循环外使用产品ID 1)打破循环 (仅