Add and save admin product variations custom field in Woocommerce

前端 未结 1 1005
你的背包
你的背包 2020-12-21 17:35

So I\'ve got the following code which makes me add a Barcode field to the Inventory Options of a product.

Now I also want to add this to each variations so I can ea

相关标签:
1条回答
  • 2020-12-21 18:35

    In your last hooked function you have a missing argument, which is a similar to $loop argument in your 3rd function. So I have made little changes in your code:

    // Add product Barcode custom field
    add_action('woocommerce_product_options_sku','add_barcode_custom_field' );
    function add_barcode_custom_field(){
        woocommerce_wp_text_input( array(
            'id'          => '_barcode',
            'label'       => __('Barcode','woocommerce'),
            'placeholder' => 'Scan Barcode',
            'desc_tip'    => 'true',
            'description' => __('This is the Scan barcode field for this product.','woocommerce')
        ) ); 
    }
    
    // Save product Barcode custom field
    add_action( 'woocommerce_process_product_meta', 'save_barcode_custom_field', 10, 1 );
    function save_barcode_custom_field( $post_id ){
        if( isset($_POST['_barcode']) )
            update_post_meta( $post_id, '_barcode', esc_attr( $_POST['_barcode'] ) );
    }
    
    // Add Variation Barcode custom field
    add_action( 'woocommerce_variation_options_pricing', 'add_barcode_variation_custom_field', 10, 3 );
    function add_barcode_variation_custom_field( $loop, $variation_data, $variation ){
    
        $variation_barcode = get_post_meta($variation->ID,"_barcode", true );
        if( ! $variation_barcode ) $variation_barcode = "";
    
        woocommerce_wp_text_input( array(
            'id'          => '_barcode['.$loop.']',
            'label'       => __('Variation Barcode','woocommerce'),
            'placeholder' => 'Scan Barcode',
            'desc_tip'    => 'true',
            'description' => __('This is the Scan barcode field for this variation.','woocommerce')
            'value'       => get_post_meta($variation->ID,"_barcode", true ),
        ) );
    }
    
    // Save Variation Barcode custom field value
    add_action( 'woocommerce_save_product_variation', 'save_barcode_variation_custom_field', 10, 2 );
    function save_barcode_variation_custom_field( $variation_id, $i ){
        if( isset($_POST['_barcode'][$i]) )
            update_post_meta( $variation_id, '_barcode', sanitize_text_field($_POST['_barcode'][$i]) );
    }
    

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

    This code is tested and works for WooCommerce version 2.6+ and 3.0+

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