Создайте заказ программно после отправки формы. ПЕРЕХОДНАЯ ЦЕНА НА ПРОДУКТ - Woocommerce - PullRequest
0 голосов
/ 11 марта 2020

У меня есть код, который я хочу создавать заказ в 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' - это идентификатор поля моей формы с ценой, которую я хочу использовать в заказе на товар.

1 Ответ

1 голос
/ 11 марта 2020

Использование: 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);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...