Я добавил пользовательский блок выбора в кассе woocommerce. Как сохранить данные, чтобы в будущих заказах ему не нужно было снова выбирать значение - PullRequest
1 голос
/ 10 марта 2020

Я добавил пользовательский блок выбора в кассе woocommerce. Я просто хочу, чтобы значение, впервые введенное вошедшим в систему клиентом, сохранялось в его пользовательской мета-версии, чтобы в будущих заказах ему не нужно было снова выбирать значение из пользовательского поля выбора. Все остальное, что отлично работает

ниже - это код

add_action('woocommerce_before_order_notes', 'wps_add_select_checkout_field');
function wps_add_select_checkout_field( $checkout ) {


echo '<h3>'.__('Locality').'</h3>';

woocommerce_form_field( 'daypart', array(
    'type'          => 'select',
    'class'         => array( 'wps-drop' ),
    'label'         => __( 'Deliverable Locations' ),
    'required'  => true,
    'options'       => array(
        'blank'     => __( 'Select a Locality', 'wps' ),
        'morning'   => __( 'opt1', 'wps' ),
        'afternoon' => __( 'opt2', 'wps' ),
        'evening'   => __( 'opt2', 'wps' )
    )

),

$checkout->get_value( 'daypart' ));

}
//* 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['daypart'] == "blank")
 wc_add_notice( '<strong>Please select a locality </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['daypart']) update_post_meta( $order_id, 'daypart', esc_attr($_POST['daypart']));

 }

//* 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>'.__('Delivery option').':</strong> ' . get_post_meta( $order->id, 'daypart', 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['Daypart:'] = 'daypart';
return $keys;

}

...