在WooCommerce中向条件代码字段添加条形码字段

时间:2017-04-27 11:34:27

标签: wordpress woocommerce product inventory

我想在我的产品的库存设置中的SKU代码字段下添加条形码字段。我想使用这个,因为我正在使用WooCommerce POS并根据条形码字段进行扫描,但仍然使用SKU字段作为真正的SKU代码。

如何在不使用任何插件的情况下完成此操作。 (阅读:Function.php代码)。

我已经尝试使用以下代码,但没有取得任何成功:

//Add barcode to the product inventory tab
add_action('woocommerce_product_options_inventory_product_data','add_barcode');
function add_barcode(){
    global $woocommerce,$post;
    woocommerce_wp_text_input(
        array(
            'id'          => '_barcode',
            'label'       => __('Barcode','woocommerce'),
            'placeholder' => 'Scan Barcode',
            'desc_tip'    => 'true',
            'description' => __('Scan barcode.','woocommerce')
        ));
}
//Save Barcode Field
function add_barcode_save($post_id){
    if(isset($_POST['_barcode'])){
        update_post_meta($post_id,'_barcode',sanitize_text_field($_POST['_barcode']));
    }else{
        delete_meta_data($post_id,'_barcode',sanitize_text_field($_POST['_barcode']));
    }
}
add_action('woocommerce_process_product_meta','add_barcode_save');
//Set POS Custom Code
function pos_barcode_field(){return '_barcode';}
add_filter('woocommerce_pos_barcode_meta_key','pos_barcode_field');

由于代码在添加到Functions.php时似乎没有任何效果。如果改变了什么,我会使用富有成效的主题。

有谁知道我在这里做错了什么?在此先感谢您提供的帮助!

1 个答案:

答案 0 :(得分:2)

正如我上面提到的,你的代码应该是一个插件。这是您为WooCommerce 3.0更新的代码。但它并不是兼容的。

function add_barcode(){
    woocommerce_wp_text_input(
        array(
            'id' => '_barcode',
            'label' => __( 'Barcode', 'your-plugin' ),
            'placeholder' => 'Scan Barcode',
            'desc_tip' => 'true',
            'description' => __( "Scan the product's barcode.", "your-plugin" )
        )
    );
}
add_action('woocommerce_product_options_inventory_product_data','add_barcode');


function add_barcode_save( $product ){
    if( isset( $_POST['_barcode'] ) ) {
        $product->update_meta_data( '_barcode', sanitize_text_field( $_POST['_barcode'] ) );
    } else {
        $product->delete_meta_data( '_barcode' );
    }
}
add_action( 'woocommerce_admin_process_product_object', 'add_barcode_save' );

然后,您需要检索元数据的任何地方,您可以这样做:

$product = wc_get_product( $product_id );
$product->get_meta( '_variable_billing' );