Я добавил настраиваемое поле на одну страницу продукта для 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; } ?>
С уважением