我正在使用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应用答案,但无法引用它让它发挥作用。
有谁知道我在哪里错了?
答案 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' );
现在这将有效