asked on
//* Add select field to the checkout page
add_action('woocommerce_before_order_notes', 'wps_add_select_checkout_field');
function wps_add_select_checkout_field( $checkout ) {
echo '<h2>'.__('Choose your Pickup Location').'</h2>';
woocommerce_form_field( 'location', array(
'type' => 'select',
'class' => array( 'wps-drop' ),
'label' => __( 'Delivery options' ),
'options' => array(
'blank' => __( 'Select Pickup Location', 'wps' ),
'santabarbara' => __( 'Santa Barbara, 33 W Parker Way', 'wps' ),
'montecito' => __( 'Montecito, 1187 Coast Village Road', 'wps' ),
'carpinteria' => __( 'Carpinteria, 4185 Carpinteria Ave', 'wps' )
)
),
$checkout->get_value( 'location' ));
}
//* Process the checkout
add_action('woocommerce_checkout_process', 'wps_select_checkout_field_process');
function wps_select_checkout_field_process() {
global $woocommerce;
// Check if set, if its not set add an error.
if ($_POST['location'] == "blank")
wc_add_notice( '<strong>Please select a Pickup Location under Delivery options</strong>', 'error' );
}
//* Update the order meta with field value
add_action('woocommerce_checkout_update_order_meta', 'wps_select_checkout_field_update_order_meta');
function wps_select_checkout_field_update_order_meta( $order_id ) {
if ($_POST['location']) update_post_meta( $order_id, 'location', esc_attr($_POST['location']));
}
//* Display field value on the order edition page
add_action( 'woocommerce_admin_order_data_after_billing_address', 'wps_select_checkout_field_display_admin_order_meta', 10, 1 );
function wps_select_checkout_field_display_admin_order_meta($order){
echo '<p><strong>'.__('Pickup Location').':</strong> ' . get_post_meta( $order->id, 'location', true ) . '</p>';
}
//* Add selection field value to emails
add_filter('woocommerce_email_order_meta_keys', 'wps_select_order_meta_keys');
function wps_select_order_meta_keys( $keys ) {
$keys['Pickup Location:'] = 'location';
return $keys;
}