【问题标题】:Add a barcode field to Product Inventory in WooCommerce在 WooCommerce 中将条形码字段添加到产品库存
【发布时间】:2017-04-27 11:34:27
【问题描述】:

我想在我的产品库存设置中的 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 主题。

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

【问题讨论】:

  • 不,我正在扫描产品,因此来自此的数字(例如 123456789)将被放入此字段。我不必生成自己的条形码,因为我所有的产品都已经有唯一的条形码。我正在寻找一种不需要插件的方法。我的前端也不需要它,只是为了让后端快速扫描并在商店支付产品。
  • 所以看来我的代码确实有效,如果它作为一个单独的插件添加,但不是从主题 Fruitful 添加到 Function.php 时,它似乎不起作用。它要么返回 500 错误,要么无法正常运行。有谁知道这可能是什么问题?我还没有对这个主题的functions.php进行任何其他修改,我试图把它放在完全结束或开始时也没有任何运气。
  • 这绝对应该是一个插件,因为它是自定义功能,而主题应该处理“显示”。但主题也是在插件之后加载的,因此在运行 functions.php 时,您正在连接的一些 WooCommerce 操作挂钩可能已经被触发。
  • @helgatheviking 感谢您提供的信息,那么最后隔离代码是个好主意!

标签: wordpress woocommerce product inventory


【解决方案1】:

正如我上面提到的,您的代码应该是一个插件。这是为 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' );

【讨论】:

  • 我仍在使用 WooCommerce 2.6,因为我不敢更新,因为我看到用户在 3.0 版本中遇到的所有问题。但是,无论哪种方式,感谢您对实际升级到 3.0 的人的回答!
  • 您最终将不得不升级。 :) WooCommerce 3.0.5 应该很快就会发布,所以所有的重点版本都在修复错误并使其变得更好。但它仍然是一个主要版本,并非所有主题/插件都准备好了。我强烈建议在投入生产之前先构建一个开发站点来测试升级。
  • 是的,一旦我们决定实际迁移到较新的版本,就会这样做。目前一切正常,只要它正常,那么我们现在就很好。如果最终一切都兼容,那么我们将考虑升级!不管怎样,感谢您的帮助。
  • 好吧,这很奇怪,如果我在新添加的字段中扫描我的条形码,然后按更新或发布,那么 Wordpress 会打开一个新选项卡。但是,如果我只是在字段中输入数字然后更新/发布,那么它不会。因此,由于某种原因,如果我扫描产品,然后直接按下更新/发布按钮,然后它会打开一个选项卡,如果我随后进行一些其他更改,例如输入 SKU,那么它不会打开另一个窗口/选项卡。该值除了数字之外没有任何特殊字符,所以我真的很困惑为什么 Wordpress 有这种行为。我确实稍微更新了我的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2020-12-21
  • 2018-11-07
  • 1970-01-01
  • 2020-07-02
  • 2016-09-12
  • 2020-10-02
相关资源
最近更新 更多