从WooCommerce中的自定义文本字段中保存空值

时间:2017-11-25 16:11:05

标签: php wordpress woocommerce product custom-fields

我正在使用WordPress电子商务网站,WooCommerce是所选的购物平台。

我已在WooCommerce产品信息中心内创建了一个自定义字段,方法是将以下代码插入functions.php文件中:

function product_custom_fields_add(){
echo '<div class="product_custom_field">';
    // Minimum Required Custom Letters
    woocommerce_wp_text_input(
        array(
            'id'        => '_minimum_engrave_text_option',
            'name'      => '_minimum_engrave_text_option',
            'desc'      =>  __('set custom minimum Lettering text field', 'woocommerce'),
            'label'     => __('Minimum Letters', 'woocommerce'),
            'desc_tip'  => 'true'
        )
    );
    echo '</div>';
}
add_action('woocommerce_product_options_advanced', 'product_custom_fields_add');

为了保存这些值,我在functions.php文件中输入了以下代码:

// Save Minimum Required Custom Letters
function woocommerce_product_custom_fields_save1($post_id){
    if ( ! empty( $_POST['_minimum_engrave_text_option'] ) )
        update_post_meta($post_id, '_minimum_engrave_text_option', esc_attr( $_POST['_minimum_engrave_text_option'] ));
}
add_action( 'woocommerce_process_product_meta', 'woocommerce_product_custom_fields_save1' );

当在自定义字段中输入值时,上述代码有效。我的问题是我无法成功保存空值。每当我保存产品时,自定义字段会自动使用“1”填充字段或保存以前输入的数字。

我尝试从similar question应用答案,但无法引用它让它发挥作用。

有谁知道我在哪里错了?

1 个答案:

答案 0 :(得分:1)

尝试将empty()替换为isset()作为您的隐藏函数的if语句中的条件:

// Save Minimum Required Custom Letters
function woocommerce_product_custom_fields_save1($post_id){
    if ( isset( $_POST['_minimum_engrave_text_option'] ) )
        update_post_meta($post_id, '_minimum_engrave_text_option', esc_attr( $_POST['_minimum_engrave_text_option'] ));
}
add_action( 'woocommerce_process_product_meta', 'woocommerce_product_custom_fields_save1' );

现在这将有效