为了账号安全,请及时绑定邮箱和手机立即绑定

自定义 WooCommerce 产品字段未保存在数据库中

自定义 WooCommerce 产品字段未保存在数据库中

PHP
开心每一天1111 2022-12-23 13:00:07
我为 WooCommerce 产品创建了一个自定义字段,但是当我尝试保存它时,它的值没有保存在数据库中function product_certification_number() {    $args = array(        'id'            => 'product_certification_number',        'label'         => sanitize_text_field( 'Product Certification Number' ),    );    woocommerce_wp_text_input( $args );}add_action('woocommerce_product_options_general_product_data','product_certification_number' );function product_certification_number_save( $post_id ) {    if ( ! ( isset( $_POST['woocommerce_meta_nonce'], $_POST[ 'product_certification_number' ] ) || wp_verify_nonce( sanitize_key( $_POST['woocommerce_meta_nonce'] ), 'woocommerce_save_data' ) ) ) {        return false;    }    $product_teaser = sanitize_text_field(        wp_unslash( $_POST[ 'product_certification_number' ] )    );    update_post_meta(        $post_id,        'product_certification_number',        esc_attr( $product_teaser )    );}add_action('woocommerce_process_product_meta','product_certification_number_save');
查看完整描述

2 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

编辑:用于woocommerce_admin_process_product_object保存而不是过时的woocommerce_process_product_meta。感谢:@ LoicTheAztec


// Add field

function product_certification_number() {

    $args = array(

        'id'            => '_product_certification_number',

        'label'         => __( 'Product Certification Number', 'woocommerce' ),

        'class'         => 'custom-field',

        'desc_tip'      => true,

        'description'   => __( 'My description', 'woocommerce' ),   

    );

    woocommerce_wp_text_input( $args );

}

add_action('woocommerce_product_options_general_product_data','product_certification_number', 10, 0 );


// Save

function product_certification_number_save( $product ){

    if( isset($_POST['_product_certification_number']) ) {

        $product->update_meta_data( '_product_certification_number', sanitize_text_field( $_POST['_product_certification_number'] ) );

    }

}

add_action( 'woocommerce_admin_process_product_object', 'product_certification_number_save', 10, 1 );



查看完整回答
反对 回复 2022-12-23
?
呼唤远方

TA贡献1856条经验 获得超11个赞

我在这个问题上浪费了两个小时。


我终于发现你需要在save_meta_data之后打电话update_meta_data:


/** @var WC_Product */

$product->update_meta_data($key, $value);

$product->save_meta_data();


查看完整回答
反对 回复 2022-12-23
  • 2 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信