Я работаю над сайтом электронной коммерции 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», либо сохраняет ранее введенный номер.
Я попытался применить ответ по аналогичному вопросу , но не мог процитировать его.
Кто-нибудь знает, где я ошибаюсь?
Попробуйте заменить 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' );
Теперь это будет работать