为了账号安全,请及时绑定邮箱和手机立即绑定

在表单提交时以编程方式创建订单 OVERIDE PRODUCT PRICE

在表单提交时以编程方式创建订单 OVERIDE PRODUCT PRICE

PHP
慕码人8056858 2022-10-28 10:02:41
我有一个代码,我想在提交表单时以编程方式在 WooCommerce 中创建订单。我希望我的代码确定产品价格 - 所以覆盖产品的默认价格。这可能吗?不知道我的代码哪里出错了:// set some variables$user_id =rgar( $entry, '97' );$product_id = rgar( $entry, '71' );$quantity = rgar( $entry, '73' ); $price = rgar( $entry, '90' );$note = rgar( $entry, '53' );$product = wc_get_product($product_id);            $address = array( 'first_name' => rgar( $entry, '98' ), 'last_name' => rgar( $entry, '99' ), 'company' => rgar( $entry, '' ), 'email' => rgar( $entry, '83' ), 'phone' => rgar( $entry, '84' ), 'address_1' => rgar( $entry, '88.1' ), 'address_2' => rgar( $entry, '88.2' ), 'city' => rgar( $entry, '88.3' ), 'state' => rgar( $entry, '88.4' ), 'postcode' => rgar( $entry, '88.5' ), 'country' => rgar( $entry, '88.6' ), );// Create the order object             $order = wc_create_order();$order->set_customer_id( $user_id );$order->add_product( wc_get_product($product_id), $quantity, $prices);foreach ($order->get_items() as $item_key => $item ) {    $item->add_meta_data( 'Label', $note, true );}$order->set_address( $address, 'billing' );$order->calculate_totals();$order->update_status( 'pending payment', 'pending', TRUE); $order->add_order_note( $note );                                            $coupon_code = rgar( $entry, '105' ); $order->apply_coupon($coupon_code);                                                   break;    }}“90”是我的表单的字段 ID,其中包含我想在产品订单中使用的价格。
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

用途:WC_Product::set_price()– 设置产品的有效价格。

https://woocommerce.wp-a2z.org/oik_api/wc_productset_price/


下一行

$order->add_product( wc_get_product($product_id), $quantity, $prices);

将是

$order->add_product( $product, $quantity );

因为你已经用过wc_get_product

$product = wc_get_product($product_id);

然后你得到

// set some variables

$user_id =rgar( $entry, '97' );

$product_id = rgar( $entry, '71' );

$quantity = rgar( $entry, '73' ); 

$price = rgar( $entry, '90' );

$note = rgar( $entry, '53' );


$product = wc_get_product($product_id);


// Set price

$product->set_price( $price );


$address = array(

    'first_name' => rgar( $entry, '98' ),

    'last_name' => rgar( $entry, '99' ), 

    'company' => rgar( $entry, '' ),

    'email' => rgar( $entry, '83' ), 

    'phone' => rgar( $entry, '84' ), 

    'address_1' => rgar( $entry, '88.1' ), 

    'address_2' => rgar( $entry, '88.2' ), 

    'city' => rgar( $entry, '88.3' ), 

    'state' => rgar( $entry, '88.4' ), 

    'postcode' => rgar( $entry, '88.5' ), 

    'country' => rgar( $entry, '88.6' ),

);


// Create the order object 

$order = wc_create_order();

$order->set_customer_id( $user_id );


// add product to order

$order->add_product( $product, $quantity );


foreach ($order->get_items() as $item_key => $item ) {

    $item->add_meta_data( 'Label', $note, true );

}


$order->set_address( $address, 'billing' );

$order->calculate_totals();

$order->update_status( 'pending payment', 'pending', TRUE); 


$order->add_order_note( $note );

$coupon_code = rgar( $entry, '105' );

$order->apply_coupon($coupon_code);  


查看完整回答
反对 回复 2022-10-28
  • 1 回答
  • 0 关注
  • 65 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信