【问题标题】:Add, update or remove product custom field in WooCommerce在 WooCommerce 中添加、更新或删除产品自定义字段
【发布时间】:2021-06-30 18:31:20
【问题描述】:

我使用以下几行将Value 保存到数据库中。我对这段代码有一个问题,当我删除输入时它仍然保留它。删除它的唯一方法是将 (空格)作为输入。

$field_key_pills_1 = 'custom_text_field_category_pills';
if ( isset( $_POST[$field_key_pills_1] ) && ! empty( $_POST[$field_key_pills_1] ) ) {
    $attribute_pills_1 = wc_get_product( $post_id );
        $attribute_pills_1->update_meta_data( $field_key_pills_1, sanitize_text_field( $_POST[$field_key_pills_1] ) );
    $attribute_pills_1->save();
} else {
    $attribute_pills_1 = wc_get_product( $post_id );
    $attribute_pills_1 = delete_post_meta( $post_id, 'custom_text_field_category_pills' );
    }

请给我任何你认为可以解决这个问题的提示。

【问题讨论】:

    标签: php wordpress woocommerce product custom-fields


    【解决方案1】:

    尝试使用 WC_Data delete_meta_data() 方法删除产品元数据(元键 + 值),而不是使用以下重新访问的代码:

    $key_pills_1    = 'custom_text_field_category_pills';
    $product_pills1 = wc_get_product( $post_id );
    
    // Check that the product and the product input field exists
    if ( is_a($product_pills1, 'WC_Product') && isset($_POST[$key_pills_1]) {
        if ( ! empty($_POST[$key_pills_1]) ) {
            $product_pills1->update_meta_data( $key_pills_1, sanitize_text_field($_POST[$key_pills_1]) ); // Set or update
        } else {
            $product_pills1->delete_meta_data( $key_pills_1 ); // remove
        }
        $product_pills1->save(); // Sync and save to database   
    } 
    

    它应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多