Обновлено 2 - Ваш код немного устарел, поскольку get_product()
с некоторого времени заменяется wc_get_product()
.
1) Сначала функция, которая собираетсясоздать заказ (с переменной, которая обрабатывает идентификатор товара, добавленный к заказу) :
function trigger_new_order( $from_product_id ) {
$address = array(
'first_name' => "Joe",
'last_name' => "Doe",
'email' => "john.doe@gmail.com",
'phone' => "0123456789",
'address_1' => "1 St. James Street",
'address_2' => "",
'city' => "San Francisco",
'state' => "California",
'postcode' => "92105",
'country' => "US"
);
$order = wc_create_order( $from_product_id );
$order->set_address( $address, 'billing' );
$order->set_address( $address, 'shipping' ); // The Shipping address
$product = wc_get_product( $from_product_id );
$order->add_product( $product );
$order->calculate_totals();
$order->update_status( 'completed', 'Imported order', true );
// Display a message with the order number
echo '<p>' . sprintf( __("Order #%d has been created"), $order->get_id() ) . '</p>';
}
Код помещается в файл functions.php вашего активного ребенкатема (или активная тема).
2) Форма с кнопкой отправки, которая собирается создать заказ
В приведенном ниже примеремы используем этот код на отдельных страницах продукта (на переднем конце) и динамически получаем идентификатор продукта:
if ( isset($_POST['new-order']) && $_POST['new-order'] === 'Submit' ) {
trigger_new_order( get_the_id() );
} else {
?>
<form class="new" method="post">
<input class="button alt" type="submit" id="button" name="new-order" value="Submit" >
</form>
<?php
}