Untitled
unknown
plain_text
2 years ago
3.4 kB
11
Indexable
add_action('b2bking_before_send_quote_cart', function() {
// Check if WooCommerce is active
if (function_exists('WC')) {
// Get the current cart instance
$cart = WC()->cart;
// Ensure the cart isn't empty
if (!$cart->is_empty()) {
// Create a new order
$order = wc_create_order();
// Assuming the current user is logged in, retrieve user ID
$user_id = get_current_user_id();
// Loop through cart items and add them to the order
foreach ($cart->get_cart() as $cart_item_key => $cart_item) {
$item_id = $order->add_product(
wc_get_product($cart_item['product_id']),
$cart_item['quantity'],
array(
'subtotal' => 0, // Set item subtotal (before discounts) to 0
'total' => 0, // Set item total (after discounts) to 0
)
);
// If you have product variations
if (!empty($cart_item['variation_id'])) {
$order->update_product($item_id, wc_get_product($cart_item['variation_id']));
}
}
// Load the user's billing and shipping details
$billing_address = array(
'first_name' => get_user_meta($user_id, 'billing_first_name', true),
'last_name' => get_user_meta($user_id, 'billing_last_name', true),
'company' => get_user_meta($user_id, 'billing_company', true),
'email' => get_user_meta($user_id, 'billing_email', true),
'phone' => get_user_meta($user_id, 'billing_phone', true),
'address_1' => get_user_meta($user_id, 'billing_address_1', true),
'address_2' => get_user_meta($user_id, 'billing_address_2', true),
'city' => get_user_meta($user_id, 'billing_city', true),
'state' => get_user_meta($user_id, 'billing_state', true),
'postcode' => get_user_meta($user_id, 'billing_postcode', true),
'country' => get_user_meta($user_id, 'billing_country', true),
);
$shipping_address = array(
'first_name' => get_user_meta($user_id, 'shipping_first_name', true),
'last_name' => get_user_meta($user_id, 'shipping_last_name', true),
'company' => get_user_meta($user_id, 'shipping_company', true),
'address_1' => get_user_meta($user_id, 'shipping_address_1', true),
'address_2' => get_user_meta($user_id, 'shipping_address_2', true),
'city' => get_user_meta($user_id, 'shipping_city', true),
'state' => get_user_meta($user_id, 'shipping_state', true),
'postcode' => get_user_meta($user_id, 'shipping_postcode', true),
'country' => get_user_meta($user_id, 'shipping_country', true),
);
// Set order billing and shipping details
$order->set_address($billing_address, 'billing');
$order->set_address($shipping_address, 'shipping');
$order->calculate_totals();
$order->update_status('wc-pending', 'Order created programmatically by B2BKing before sending a quote cart', TRUE);
}
}
});Editor is loading...
Leave a Comment