php - 如何向 WooCommerce 产品添加(第二个)自定义 sku 字段?

标签 php wordpress woocommerce hook-woocommerce sku

我们需要在我们的产品中为 Prod ref/Cat 编号设置另一个字段,我找到了 bit of code下面它完美地工作。
我现在需要为会计师软件使用的名义代码添加第二个字段。
我再次尝试使用以下代码,针对新字段进行了调整,但没有奏效。

function jk_add_custom_sku() {
  $args = array(
    'label' => __( 'Custom SKU', 'woocommerce' ),
    'placeholder' => __( 'Enter custom SKU here', 'woocommerce' ),
    'id' => 'jk_sku',
    'desc_tip' => true,
    'description' => __( 'This SKU is for internal use only.', 'woocommerce' ),
  );
  woocommerce_wp_text_input( $args );
}
add_action( 'woocommerce_product_options_sku', 'jk_add_custom_sku' );

function jk_save_custom_meta( $post_id ) {
  // grab the SKU value
  $sku = isset( $_POST[ 'jk_sku' ] ) ? sanitize_text_field( $_POST[ 'jk_sku' ] ) : '';
  
  // grab the product
  $product = wc_get_product( $post_id );
  
  // save the custom SKU meta field
  $product->update_meta_data( 'jk_sku', $sku );
  $product->save();
}

add_action( 'woocommerce_process_product_meta', 'jk_save_custom_meta' );

最佳答案

添加额外的字段可以通过一种非常简单的方式完成:

function jk_add_custom_sku() {
    $args_1 = array(
        'label' => __( 'Custom SKU', 'woocommerce' ),
        'placeholder' => __( 'Enter custom SKU here', 'woocommerce' ),
        'id' => 'jk_sku',
        'desc_tip' => true,
        'description' => __( 'This SKU is for internal use only.', 'woocommerce' ),
    );
    woocommerce_wp_text_input( $args_1 );

    // Extra field
    $args_2 = array(
        'label' => __( 'Nominal codes', 'woocommerce' ),
        'placeholder' => __( 'Enter nominal codes here', 'woocommerce' ),
        'id' => '_nominal_codes',
        'desc_tip' => true,
        'description' => __( 'This is for nominal codes.', 'woocommerce' ),
    );
    woocommerce_wp_text_input( $args_2 );
}
add_action( 'woocommerce_product_options_sku', 'jk_add_custom_sku' );

// Save
function jk_save_custom_meta( $product ){
    if( isset($_POST['jk_sku']) ) {
        $product->update_meta_data( 'jk_sku', sanitize_text_field( $_POST['jk_sku'] ) );
    }

    // Extra field
    if( isset($_POST['_nominal_codes']) ) {
        $product->update_meta_data( '_nominal_codes', sanitize_text_field( $_POST['_nominal_codes'] ) );
    }
}
add_action( 'woocommerce_admin_process_product_object', 'jk_save_custom_meta', 10, 1 );

关于php - 如何向 WooCommerce 产品添加(第二个)自定义 sku 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61290387/

相关文章:

php - 根据产品标签显示产品类别 Woocommerce/PHP

php - Woocommerce - 尝试提取订单的运费

php - 无法将 php 服务器响应转换为 html5 OpenFL haxe 应用程序

javascript - woocommerce 变化和数量步骤

php - 使用 Alamofire 从 PHP 服务器检索 JSON 时出现问题

php - 在 wordpress 中使用 wp_Query 的 JSON?

html - 大型菜单下拉菜单的宽度

php - 在 WooCommerce 中禁用所有基于用户国家/地区 geo-ip 的付款方式

javascript - 如何将变量从服务器端返回到客户端脚本?

php - 长时间运行的 Doctrine 查询会锁定其他简单查询 - 排除 MySQL 问题