使用ACF插件将条形码信息添加到WordPress woocommerce产品页面

问题描述 投票:0回答:1

我正在使用 ACF 将条形码信息添加到 WordPress Woocommerce 产品页面。它必须与这里的条款一致:

必须遵循此处:https://support.convictional.com/woocommerce/adding-barcode-values-in-woo-commerce#adding_barcode_values_in_woo_commerce 按照他们要求的条件。

[{ "id": 1, 
   "key": "barcode",
   "value": "12345678912" 
}, 
{ 
   "id": 2, 
   "key": "barcode_type", 
   "value": "upc" 
}]

这里的专家可以告诉我如何以及在哪里设置吗?

我确实在 ACF 中使用

barcode
barcode_type
设置了测试区域,但在页面上显示不同。

php json woocommerce advanced-custom-fields custom-fields
1个回答
0
投票

ACF 不方便用于此目的,因为真正的元密钥永远不会像

"barcode"
"barcode_type"
那样,而是类似:
"field_648f2aaff9f4b"
,如您在 这个线程另一个线程

中看到的那样

基于 在 WooCommerce 产品选项编辑页面中在 SKU 答案之前显示自定义字段,您可以在库存部分下的产品设置中轻松添加 2 个自定义字段:

// Admin: Add custom fields to product inventory section
add_action('woocommerce_product_options_sku', 'add_product_barcode_fields' );
function add_product_barcode_fields(){

    echo '<div class="class="barcode-options options_group">';

    woocommerce_wp_select( array(
        'id'          => 'barcode_type',
        'label'       => __('Barcode type', 'woocommerce' ),
        'options'     => array(
            'upc'       => __('UPC'),
            'gtin'      => __('GTIN'),
            'isbn'      => __('ISBN'),
        ),
    ) );

    woocommerce_wp_text_input( array(
        'id'          => 'barcode',
        'label'       => __('Barcode', 'woocommerce' ),
        'placeholder' => __('Enter the barcode', 'woocommerce' ),
    ) );

    echo '</div>';
}

// Admin: Save custom field values
add_action('woocommerce_admin_process_product_object', 'save_product_barcode_field_values', 10, 1 );
function save_product_barcode_field_values( $product ){
    if( isset($_POST['barcode_type']) ) {
        $product->update_meta_data( 'barcode_type', esc_attr($_POST['barcode_type']) );
    }

    if( isset($_POST['barcode']) ) {
        $product->update_meta_data( 'barcode', sanitize_text_field($_POST['barcode']) );
    }
}

代码位于子主题的functions.php 文件中(或插件中)。已测试且有效;

您将得到:

© www.soinside.com 2019 - 2024. All rights reserved.