在 WooCommerce 的产品库存中添加条形码字段
Add a barcode field to Product Inventory in WooCommerce
我想在我的产品库存设置中的 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 时似乎根本没有任何效果。如果有任何改变,我正在使用 Fruitful 主题。
有谁知道我在这里做错了什么?在此先感谢您为我提供的帮助!
正如我上面提到的,您的代码应该是一个插件。这是为 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' );
我想在我的产品库存设置中的 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 时似乎根本没有任何效果。如果有任何改变,我正在使用 Fruitful 主题。
有谁知道我在这里做错了什么?在此先感谢您为我提供的帮助!
正如我上面提到的,您的代码应该是一个插件。这是为 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' );