php 购物车 修改商品信息,php – 使用自定义信息和价格将产品添加到购物车

我已经安装了woocommerce来处理产品输入和wordpress商店的结帐过程.

商店页面是定制的,允许用户从列表中选择产品并定制它,根据存储在数据库中的信息以javascript输出价格.

存储在数据库中的产品的价值为0.00,因为根据所选的变量,它们的价格不同.

我准备传递给woocommerce的输出数据如下:

> WC产品ID(这与db中的产品匹配)

>定制价格

>自定义图像

>自定义说明(例如100毫米x 100毫米)

>构建数据(针对项目存储但未在结帐时看到)

我正在尝试找到一种方法,使用产品ID将产品添加到购物车(使其有效),然后使用自定义价格覆盖价格并附加大部分将在结帐时看到的元数据,其中一个将被隐藏直到wordpress管理员看到.

通过使用以下方式将产品添加到购物车:

$woocommerce->cart->add_to_cart($_POST['custom_product_id']);

在此之后,我发现无法覆盖价格并添加其他信息.

解决方法:

所有这些代码都进入了functions.php

>这会捕获额外的发布信息(全部在一个阵列中发送)

add_filter('woocommerce_add_cart_item_data','wdm_add_item_data',1,10);

function wdm_add_item_data($cart_item_data, $product_id) {

global $woocommerce;

$new_value = array();

$new_value['_custom_options'] = $_POST['custom_options'];

if(empty($cart_item_data)) {

return $new_value;

} else {

return array_merge($cart_item_data, $new_value);

}

}

>这将捕获上一个函数中的信息并将其附加到项目中.

add_filter('woocommerce_get_cart_item_from_session', 'wdm_get_cart_items_from_session', 1, 3 );

function wdm_get_cart_items_from_session($item,$values,$key) {

if (array_key_exists( '_custom_options', $values ) ) {

$item['_custom_options'] = $values['_custom_options'];

}

return $item;

}

>这显示了有关篮子和篮子的额外信息.从附加到项目的附加信息中签出.

add_filter('woocommerce_cart_item_name','add_usr_custom_session',1,3);

function add_usr_custom_session($product_name, $values, $cart_item_key ) {

$return_string = $product_name . "
" . $values['_custom_options']['description'];// . "
" . print_r($values['_custom_options']);

return $return_string;

}

>这将信息添加为元数据,以便可以将其视为订单的一部分(隐藏客户的任何元数据,只需使用下划线启动)

add_action('woocommerce_add_order_item_meta','wdm_add_values_to_order_item_meta',1,2);

function wdm_add_values_to_order_item_meta($item_id, $values) {

global $woocommerce,$wpdb;

wc_add_order_item_meta($item_id,'item_details',$values['_custom_options']['description']);

wc_add_order_item_meta($item_id,'customer_image',$values['_custom_options']['another_example_field']);

wc_add_order_item_meta($item_id,'_hidden_field',$values['_custom_options']['hidden_info']);

}

>如果要覆盖价格,可以使用针对产品保存的信息来执行此操作

add_action( 'woocommerce_before_calculate_totals', 'update_custom_price', 1, 1 );

function update_custom_price( $cart_object ) {

foreach ( $cart_object->cart_contents as $cart_item_key => $value ) {

// Version 2.x

//$value['data']->price = $value['_custom_options']['custom_price'];

// Version 3.x / 4.x

$value['data']->set_price($value['_custom_options']['custom_price']);

}

}

您的所有自定义信息都将显示在客户电子邮件中,并在wordpress中订购,只要您将其添加为元数据(4.)

标签:php,wordpress,woocommerce

来源: https://codeday.me/bug/20191004/1851922.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值