-
-
Save warnakey/acc86ad11912de82cbfd51b30bb0c203 to your computer and use it in GitHub Desktop.
<?php | |
/* PLACE ORDERS ON HOLD WHEN BILLING & SHIPPING INFO DO NOT MATCH */ | |
add_action( 'woocommerce_thankyou', 'woocommerce_billing_shipping_address_match', 10, 1); | |
function woocommerce_billing_shipping_address_match( $order_id ) { | |
if ( ! $order_id ) { | |
return; | |
} | |
// Get the order id | |
$order = wc_get_order( $order_id ); | |
// Customer billing information details | |
$billing_first_name = $order->get_billing_first_name(); | |
$billing_last_name = $order->get_billing_last_name(); | |
$billing_company = $order->get_billing_company(); | |
$billing_address_1 = $order->get_billing_address_1(); | |
$billing_address_2 = $order->get_billing_address_2(); | |
$billing_city = $order->get_billing_city(); | |
$billing_state = $order->get_billing_state(); | |
$billing_postcode = $order->get_billing_postcode(); | |
$billing_country = $order->get_billing_country(); | |
// Customer shipping information details (from account) | |
$shipping_first_name = $order->get_shipping_first_name(); | |
$shipping_last_name = $order->get_shipping_last_name(); | |
$shipping_company = $order->get_shipping_company(); | |
$shipping_address_1 = $order->get_shipping_address_1(); | |
$shipping_address_2 = $order->get_shipping_address_2(); | |
$shipping_city = $order->get_shipping_city(); | |
$shipping_state = $order->get_shipping_state(); | |
$shipping_postcode = $order->get_shipping_postcode(); | |
$shipping_country = $order->get_shipping_country(); | |
// check if any the billing info does not match the shipping info and place on hold if not | |
if($billing_first_name !== $shipping_first_name || $billing_last_name !== $shipping_last_name || $billing_address_1 !== $shipping_address_1 || $billing_address_2 !== $shipping_address_2 || $billing_city !== $shipping_city || $billing_state !== $shipping_state || $billing_postcode !== $shipping_postcode || $billing_country !== $shipping_country) { | |
// Place the order on hold | |
$order->update_status( 'on-hold' ); | |
} | |
} |
Here you go: https://gist.github.com/charliesjc/b3bfa1e2c35bd3c21f426c05b1db8234.
So I would add this:
if ($order_status == 'processing') { $order_status = 'on-hold'; }
in your last if statement and then return the $order_status at the end of the function. The only real difference to your original code is the hook.
I haven't got a clue why my link says one thing and then links straight back to your original gist.
Here you go: https://gist.github.com/charliesjc/b3bfa1e2c35bd3c21f426c05b1db8234.
So I would add this:
if ($order_status == 'processing') { $order_status = 'on-hold'; }
in your last if statement and then return the $order_status at the end of the function. The only real difference to your original code is the hook.
Your link text and link don't match. This will work:
https://gist.github.com/charliesjc/b3bfa1e2c35bd3c21f426c05b1db8234
Here you go: https://gist.github.com/charliesjc/b3bfa1e2c35bd3c21f426c05b1db8234.
So I would add this:
if ($order_status == 'processing') { $order_status = 'on-hold'; }
in your last if statement and then return the $order_status at the end of the function. The only real difference to your original code is the hook.Your link text and link don't match. This will work:
https://gist.github.com/charliesjc/b3bfa1e2c35bd3c21f426c05b1db8234
I know. I even said so in my previous comment. I haven't got a clue why it's doing that. The link that's in the message is exactly the same as the text, but it's ignoring it completely and linking back to this gist.
Yes please! I only want the email to go out after someone manually changes the order status to processing, so I would love to see your solution. Thank you