Home » WooCommerce: Set Checkout Field Value @ Order Creation

WooCommerce: Set Checkout Field Value @ Order Creation

by Tutor Aspire

This is a very specific function. Sometimes, you need to “set” a checkout field value upon order creation (because it was not required and left empty for example). In some other cases, you might want to override what the customer input if you have certain requirements.

Either way, overriding the checkout fields on order creation is super easy. Here’s how it’s done – enjoy!

Set a checkout field value programmatically upon WooCommerce order creation

PHP Snippet: Set & Save a Checkout Field Programmatically Upon Order Creation

The “$order->set_$key( $value )” function comes to the rescue. Simply concatenate it with the shipping/billing field key in order to tell the system what key you should target. $value defines the value you should set this key to.

In the following example, I’m setting the “billing_city” to “Singapore” in case “Singapore” is the “billing_country”. Change “billing_city” to any other key to set that specific key.

/**
 * @snippet       Set checkout billing / shipping field - WooCommerce Order
 * @how-to        Get tutoraspire.com FREE
 * @author        Tutor Aspire
 * @compatible    WooCommerce 3.5.7
 * @donate $9     https://www.tutoraspire.com
 */

add_action( 'woocommerce_checkout_create_order', 'tutoraspire_set_singapore_city', 9999, 2 );

function tutoraspire_set_singapore_city( $order, $data ) {
if ( $data['billing_country'] === 'SG' ) $order->set_billing_city( 'Singapore' );
}

You may also like