usuarios tutorial qué plugin personalizar personalizados para mostrar modificar finalizar fields custom compra campos advanced php wordpress woocommerce custom-fields

php - tutorial - Los campos personalizados de WooCommerce no se actualizarán cuando los deje vacíos y aún muestren campos vacíos



plugin para personalizar campos del checkout de woocommerce (3)

Agregué un campo personalizado a una sola página de producto para woocommerce con el fin de mostrar el número de ISBN de los libros que vendo. Encontré una buena guía y logré agregar todo lo que quisiera. Sin embargo, cuando vacíe el campo personalizado para ISBN, no se vaciará en el sitio.

Tengo el siguiente código en 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 ) ); }

Luego en el short-description.php lo hice para que aparezca en la página del producto. Sin embargo, todavía muestra el nombre ISBN10: si es un campo vacío.

<?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); } ?>

Entonces, los dos problemas son que no puedo editar el producto para que contenga un campo personalizado vacío. Y si el campo está vacío (solo es posible cuando el campo no contenía datos), sigue mostrando el nombre del campo.

Gracias por adelantado.


Que hace:

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

¿regreso?

Supongo que el problema es que el campo todavía contiene algún valor, incluso si está vacío. Compruebe que var_dump y luego ajuste su sentencia if

y supongo que la declaración debería ser como:

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


Tu función de guardar debería ser como

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 ) devuelve true solo si $_POST[''_ISBN_field''] tiene algún valor por lo que la meta de la publicación no se actualiza si $_POST[''_ISBN_field''] está vacío


Prueba esto:

<?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; } ?>

Saludos