gpt4 book ai didi

php - 使用自定义信息和价格将产品添加到购物车

转载 作者:IT王子 更新时间:2023-10-29 00:16:43 30 4
gpt4 key购买 nike

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

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

数据库中存储的产品的值(value)为 0.00,因为它们的价格因所选变量而异。

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

  • WC 产品 ID(这与数据库中的产品匹配)
  • 自定义价格
  • 自定义图片
  • 自定义说明(例如 100mm x 100mm)
  • 构建数据(针对项目存储但在结帐时不可见)

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

将产品添加到购物车是通过使用:

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

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

最佳答案

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

  1. 这会捕获附加的发布信息(全部发送到一个数组中)

    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);
    }
    }
  2. 这从之前的函数中捕获信息并将其附加到项目。

    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;
    }
  3. 这会显示附加到商品的附加信息中有关购物篮和结账的额外信息。

    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 . "<br />" . $values['_custom_options']['description'];// . "<br />" . print_r($values['_custom_options']);
    return $return_string;

    }
  4. 这会将信息添加为元数据,以便它可以被视为订单的一部分(要对客户隐藏任何元数据,只需以下划线开头)

    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']);

    }
  5. 如果您想覆盖价格,您可以使用针对产品保存的信息来实现此目的

    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']);
    }
    }

如果您将其添加为元数据 (4.),您的所有自定义信息将显示在客户电子邮件和 wordpress 订单中

关于php - 使用自定义信息和价格将产品添加到购物车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31482540/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com