Add a custom checkbox in WooCommerce checkout which value shows in admin edit order

后端 未结 1 1361
轻奢々
轻奢々 2020-12-05 22:02

I try to add an which value also shows at the woocommerce backend, so I can see at the end if the costumer ticked the box or not

相关标签:
1条回答
  • 2020-12-05 23:00

    You can do it in 3 steps:

    1. Adding the custom checkbox field below the Payment Methods
    2. Saving the custom checkbox field when it's checked in the order meta
    3. Displaying the custom checkbox field when it's checked on the order edit page

    Here is that code:

    // Add custom checkout field: woocommerce_review_order_before_submit
    add_action( 'woocommerce_review_order_before_submit', 'my_custom_checkout_field' );
    function my_custom_checkout_field() {
        echo '<div id="my_custom_checkout_field">';
    
        woocommerce_form_field( 'my_field_name', array(
            'type'      => 'checkbox',
            'class'     => array('input-checkbox'),
            'label'     => __('My custom checkbox'),
        ),  WC()->checkout->get_value( 'my_field_name' ) );
        echo '</div>';
    }
    
    // Save the custom checkout field in the order meta, when checkbox has been checked
    add_action( 'woocommerce_checkout_update_order_meta', 'custom_checkout_field_update_order_meta', 10, 1 );
    function custom_checkout_field_update_order_meta( $order_id ) {
    
        if ( ! empty( $_POST['my_field_name'] ) )
            update_post_meta( $order_id, 'my_field_name', $_POST['my_field_name'] );
    }
    
    // Display the custom field result on the order edit page (backend) when checkbox has been checked
    add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_custom_field_on_order_edit_pages', 10, 1 );
    function display_custom_field_on_order_edit_pages( $order ){
        $my_field_name = get_post_meta( $order->get_id(), 'my_field_name', true );
        if( $my_field_name == 1 )
            echo '<p><strong>My custom field: </strong> <span style="color:red;">Is enabled</span></p>';
    }
    

    Code goes in function.php file of your active child theme (or theme) or also in any plugin file.

    Tested in WooCommerce 3+ and works. When the checkbox has been checked, it display a custom text below billing address in order edit page…

    0 讨论(0)
提交回复
热议问题