custom field in checkout page not working with ajax cart woocommerce

I am using this code to add custom ‘agree’ check box in checkout page, it is working with simple checkout in wordpress.

add_action('woocommerce_after_order_notes', 'my_custom_checkout_field');

function my_custom_checkout_field( $checkout ) {

  echo '<div id="my-new-field"><h3>'.__('My Checkbox: ').'</h3>';

  woocommerce_form_field( 'my_checkbox', array(
    'type'          => 'checkbox',
    'class'         => array('input-checkbox'),
    'label'         => __('I have read and agreed.'),
    'required'  => true,
    ), $checkout->get_value( 'my_checkbox' ));

  echo '</div>';
}

/**
 * Process the checkout
**/
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');

function my_custom_checkout_field_process() {
    global $woocommerce;

   // Check if set, if its not set add an error.
    if (!$_POST['my_checkbox'])
       $woocommerce->add_error( __('Please agree to my checkbox.') );
}

/**
 * Update the order meta with field value
 **/
add_action('woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta');

function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ($_POST['my_checkbox']) update_post_meta( $order_id, 'My Checkbox', esc_attr($_POST['my_checkbox']));
}

but if i change woocommerce to ajax cart from admin section. my code is not working. so is there any way to work this code with ajax cart in wordpress woocommerce?

Read More

Thanks.

Related posts