Actualización de metadatos de publicación de producto en el campo del cuadro meta de administrador

Estoy tratando de actualizar los metadatos del producto WooCommerce usando la función update_post_meta (), pero no funciona.

Aquí está mi código:

function woo_add_deal_general_fields_save( $post_id ){ $post_id = (int)$post_id; // tried to convert into integer $woocommerce_textarea = $_POST['_deal_textarea']; if( !empty( $woocommerce_textarea ) ) if ( get_post_meta($post_id, '_deal_textarea', FALSE ) ) { $test= update_post_meta($post_id, '_deal_textarea', $woocommerce_textarea ); } else { add_post_meta($post_id, '_deal_textarea', $woocommerce_textarea ); } var_dump($test);exit; } 

Si lo bash con una identificación de producto fija, funciona :

 $test= update_post_meta(70, '_deal_textarea', $woocommerce_textarea ); 

Por qué no funciona con $post_id, (int)$post_id, & either get_the_ID(); ?

Aquí está la parte de mi código como llamadas de función:

 // 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_deal_general_fields_save' ); function woo_add_custom_general_fields() { global $woocommerce, $post; $feature_product=get_post_meta(get_the_ID(), '_featured', true ); if($feature_product=='yes'){ echo '
'; // Custom fields will be created here... // Textarea woocommerce_wp_textarea_input( array( 'id' => '_deal_textarea', 'label' => __( 'Deal Caption', 'woocommerce' ), 'placeholder' => '', 'description' => __( 'Enter the Deal Product Text value here. (will be shown on home page)', 'woocommerce' ) ) ); echo '
'; } }

Gracias

Aquí está su código revisado probado y completamente funcional, basado en esta respuesta :

 // Inserting a Custom Admin Field in general tab products pages add_action( 'woocommerce_product_options_general_product_data', 'add_deal_custom_general_product_field' ); function add_deal_custom_general_product_field() { global $post; $feature_product = get_post_meta( $post->ID, '_featured', true ); if( $feature_product == 'yes' ){ echo '
'; woocommerce_wp_textarea_input( array( 'id' => '_deal_textarea', 'label' => __( 'Deal Caption', 'woocommerce' ), 'placeholder' => '', 'description' => __( 'Enter the Deal Product Text value here. (will be shown on home page)', 'woocommerce' ) ) ); echo '
'; } } // Saving the Custom Admin Field in general tab products pages when submitted add_action( 'woocommerce_process_product_meta', 'save_deal_custom_general_product_field' ); function save_deal_custom_general_product_field( $post_id ){ $wc_field = $_POST['_deal_textarea']; $feature_product = get_post_meta( $post_id, '_featured', true ); if( !empty($wc_field) && $feature_product == 'yes') update_post_meta( $post_id, '_deal_textarea', esc_attr( $wc_field ) ); }

El Código va en el archivo function.php de su tema (o tema) hijo activo o también en cualquier archivo de complemento.

Este código está probado y funciona

No sé dónde está el error, pero simplifiqué un poco el código. Por favor pruebalo:

 function woo_add_deal_general_fields_save( $post_id ){ $woocommerce_textarea = $_POST['_deal_textarea']; if( !empty( $woocommerce_textarea ) ) { $test = update_post_meta( $post_id, '_deal_textarea', $woocommerce_textarea ); var_dump( $test ); exit; } }