在 WooCommerce 产品选项编辑页面中,在 SKU 之前显示一个自定义字段

In WooCommerce product options edit page display a custom field before the SKU

所以我得到了以下功能,可以在“产品库存”选项卡中添加条形码字段。但是,此字段是在所有其他内容之后添加的,我希望在 SKU 代码之前添加此字段。

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')
        ));
}
add_action('woocommerce_product_options_inventory_product_data','add_barcode');

有没有办法把 function/field 放在 SKU 之前,也就是在实际挂钩之前,就像 woocommerce_before_product_options_inventory_product_data 一样?

感谢您提前提出任何建议。

IS NOT POSSIBLE TO PLACE ANY CUSTOM FIELD BEFORE THE SKU

You can take a look to html-product-data-inventory.php source code file which displays product inventory fields.

但是您可以在 SKU 字段之后显示您的 'Barcode' 自定义字段 (例如)

为此,您必须在 woocommerce_product_options_sku 操作挂钩中挂钩您的自定义函数。您的代码中还缺少一些内容来显示保存的值。

最后,您需要另一个函数来在保存或更新产品时保存该值。

完整代码如下:

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' => __('Scan barcode.','woocommerce')
    ) ); 
}

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'] ) );
}

此代码位于您的活动子主题(或主题)的 function.php 文件中或任何插件文件中。

此代码已经过测试,适用于 WooCommerce 版本 2.6+ 和 3.0+