Показывать пользовательское поле продукта до краткого описания в WooCommerce

У меня возникла проблема с добавлением нового поля в WooCommerce до краткого описания.

Я использовал скрипт в functions.php и мое новое настраиваемое поле отображается правильно, но:

  • Краткое описание исчезает при использовании скрипта, новое поле отображается отлично.
  • Я могу редактировать содержимое поля на странице продукта, но я не могу его удалить. Это всегда последнее значение.

Как я могу отобразить это настраиваемое поле без удаления краткого описания продукта?
Как сбросить содержимое настраиваемого поля?

Вот мой код:

 // Add a custom Field add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' ); function woo_add_custom_general_fields() { global $woocommerce, $post; woocommerce_wp_text_input( array( 'id' => '_text_field', 'label' => __( 'Termin dostawy', 'woocommerce' ), 'placeholder' => 'np: 7 dni', 'desc_tip' => 'true', 'description' => __( 'Wpisz przewidywany termin dostawy, np: 7 dni.', 'woocommerce' ) ) ); } // Save the custom field add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' ); function woo_add_custom_general_fields_save( $post_id ){ $woocommerce_text_field = $_POST['_text_field']; if( ! empty( $woocommerce_text_field ) ) update_post_meta( $post_id, '_text_field', esc_attr( $woocommerce_text_field ) ); } // Display the custom field add_action('woocommerce_short_description', 'magik_custom_text', 10, 1); function magik_custom_text() { global $product; global $woocommerce, $post; echo "Termin dostawy: ".get_post_meta( $post->ID, '_text_field', true ); } 

Функция, ответственная за отображение:

 add_action('woocommerce_short_description', 'magik_custom_text', 10, 1); function magik_custom_text() { 

Related of "Показывать пользовательское поле продукта до краткого описания в WooCommerce"

Обновление 2:

1) Вы должны добавить его в короткое описание вместо того, чтобы его заменить …

Правильный способ заключается в том, чтобы перехватить вашу пользовательскую функцию в woocommerce_single_product_summary cation hook до краткого описания (с использованием приоритета между 11 и 19):

 add_action('woocommerce_single_product_summary', 'magik_custom_text', 18); function magik_custom_text() { global $post; $field_value = get_post_meta( $post->ID, '_text_field', true ); // Displaying the custom field only when is set with a value if( ! empty( $field_value ) ) echo '<p>' . __('Termin dostawy: ', 'woocommerce') . $field_value . '</p>'; } 

Код идет в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

Протестировано и работает. Итак, вы получите следующее:

введите описание изображения здесь

введите описание изображения здесь


2) Чтобы иметь возможность удалять содержимое настраиваемого поля вашего продукта, вам необходимо заменить:

  if( ! empty( $woocommerce_text_field ) ) 

от:

  if( isset( $woocommerce_text_field ) ) 

в этой подключенной функции:

 add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' ); function woo_add_custom_general_fields_save( $post_id ){ $woocommerce_text_field = $_POST['_text_field']; if( isset( $woocommerce_text_field ) ) update_post_meta( $post_id, '_text_field', esc_attr( $woocommerce_text_field ) ); }