Пользовательские поля Woocommerce не будут обновляться, когда я оставлю их пустыми и покажут пустые поля

Я добавил настраиваемое поле на одну страницу продукта для woocommerce, чтобы показать номер ISBN для книг, которые я продаю. Я нашел хорошего гида и сумел добавить все, что захочу. Однако, когда я опустошаю настраиваемое поле для ISBN, он не будет пустым на сайте.

У меня есть следующий код в функции functions.php

// Display Fields add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' ); // Save Fields add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' ); function woo_add_custom_general_fields() { global $woocommerce, $post; echo '<div class="options_group">'; // Custom fields will be created here... // Text Field woocommerce_wp_text_input( array( 'id' => '_ISBN_field', 'label' => __( 'ISBN', 'woocommerce' ), 'placeholder' => '', 'desc_tip' => 'true', 'description' => __( 'ISBN.', 'woocommerce' ) ) ); function woo_add_custom_general_fields_save( $post_id ){ // Customer text ISBN Field $woocommerce_text_field = $_POST['_ISBN_field']; if( !empty( $woocommerce_text_field ) ) update_post_meta( $post_id, '_ISBN_field', esc_attr( $woocommerce_text_field ) ); } 

Затем в short-description.php я сделал это так, чтобы он показывался на странице продукта. Однако он все еще отображает имя ISBN10: если это пустое поле.

 <?php // Display Custom Field Value if (!((get_post_meta($post->ID, '_ISBN_field', true))==”)) { //Not empty echo '<b>ISBN10: </b>',get_post_meta( $post->ID, '_ISBN_field' , true); } ?> 

Таким образом, две проблемы: я не могу редактировать продукт, чтобы содержать пустое настраиваемое поле. И если поле пустое (возможно только тогда, когда поле ранее не содержало данных), оно по-прежнему отображает имя поля.

Заранее спасибо.

Ваша функция сохранения должна быть

 function woo_add_custom_general_fields_save( $post_id ){ // Customer text ISBN Field $woocommerce_text_field = $_POST['_ISBN_field']; if( !empty( $woocommerce_text_field ) ) update_post_meta( $post_id, '_ISBN_field', esc_attr( $woocommerce_text_field ) ); else update_post_meta( $post_id, '_ISBN_field', '' ); } 

If !empty( $woocommerce_text_field ) возвращает true, только если $_POST['_ISBN_field'] имеет некоторое значение, поэтому метаданные не обновляются, если $_POST['_ISBN_field'] пуст

что значит:

 var_dump( get_post_meta( $post->ID, '_ISBN_field' , true) ); 

вернуть?

я думаю, проблема ist в том, что поле по-прежнему содержит какое-то значение, даже оно пустое. Проверьте, что var_dump и чем настройте оператор if

и я думаю, что утверждение должно быть похоже:

 if ( get_post_meta( $post->ID, '_ISBN_field', true ) != '' ) { 

Попробуй это:

 <?php // Display Custom Field Value $ISBN_field = get_post_meta($post->ID, '_ISBN_field', true); if( !empty( $ISBN_field ) ){ echo '<b>ISBN10: </b>'.$ISBN_field; } ?> 

С уважением