Guardar campos personalizados para producto de variaciones

2

Actualmente estoy usando WooCommerce para WordPress y trato de agregar campos personalizados para el producto de variaciones. Después de algunas investigaciones, encontré un código y traté de modificarlo.

Este es mi código completo: enlace

add_action( 'woocommerce_product_after_variable_attributes', 'variable_fields', 10, 2 );
add_action( 'woocommerce_product_after_variable_attributes_js', 'variable_fields_js' );
add_action( 'woocommerce_process_product_meta_variable', 'save_variable_fields', 10, 1 );
add_action( 'woocommerce_process_product_meta_variable-subscription' , 'save_variable_fields' , 10 , 1 ) ;

function variable_fields( $loop, $variation_data ) {?>
<tr>
<td>
  <?php
  woocommerce_wp_textarea_input( 
    array( 
      'id'          => '_weightdesc['.$loop.']', 
      'label'       => __( 'Weight Description', 'woocommerce' ), 
      'placeholder' => '', 
      'description' => __( 'Enter the custom value here.', 'woocommerce' ),
      'value'       => $variation_data['_weightdesc'][0],
    )
  );
  ?>
</td>
 </tr>
<?php }
function variable_fields_js()?>
<tr>
<td>
  <?php
  woocommerce_wp_textarea_input( 
    array( 
      'id'          => '_weightdesc[ + loop + ]', 
      'label'       => __( 'My Textarea', 'woocommerce' ), 
      'placeholder' => '', 
      'description' => __( 'Enter the custom value here.', 'woocommerce' ),
      'value'       => $variation_data['_weightdesc'][0],
    )
  );
  ?>
   </td>
  </tr>
<?php }
function save_variable_fields( $post_id ) {
  if (isset( $_POST['variable_sku'] ) ) :

$variable_sku          = $_POST['variable_sku'];
$variable_post_id      = $_POST['variable_post_id'];

// Textarea
$_weightdesc = $_POST['_weightdesc'];
for ( $i = 0; $i < sizeof( $variable_sku ); $i++ ) :
  $variation_id = (int) $variable_post_id[$i];
  if ( isset( $_weightdesc[$i] ) ) {
    update_post_meta( $variation_id, '_weightdesc', stripslashes( $_weightdesc[$i] ) );
  }
endfor;


endif;
}

El campo se muestra en mi backend, pero cuando intenté guardar el valor, no está funcionando. Intenté modificarlo también, pero aún no funciona.

Encontré este código de varias fuentes, una de las cuales vino de: enlace

Creo que esto se debe a la actualización de WooCommerce (estoy usando 2.3.5).

¿Puede alguien ayudarme por favor?

    
pregunta Irwan 09.03.2015 - 12:56

2 respuestas

4

Bueno, según las respuestas en el enlace anterior (donde obtuve el código anterior y hay personas que ayudan a responder), coloco el código de modificación de mi sitio web. Lo probé y está funcionando a la perfección.

Cambiar:

add_action( 'woocommerce_product_after_variable_attributes', 'variable_fields', 10, 2 );

En:

add_action( 'woocommerce_variation_options', 'variable_fields', 10, 3 );

Y cambia:

'value'       => $variation_data['_weightdesc'][0],

En:

'value' => get_post_meta($variation->ID, '_weightdesc', true)
    
respondido por el Irwan 12.03.2015 - 18:21
4

Sé que esta publicación es antigua, pero para mantener esta pregunta actualizada:

A partir de WooCommerce 2.4.4

woocommerce_process_product_meta_variable ya no funciona, y se debe cambiar a woocommerce_save_product_variation

Entonces,

Cambiar:

add_action( 'woocommerce_process_product_meta_variable', 'save_variable_fields', 10, 1 );

En:

add_action( 'woocommerce_save_product_variation', 'save_variable_fields', 10, 1 );
    
respondido por el CᴴᵁᴮᴮʸNᴵᴺᴶᴬ 17.08.2015 - 13:30

Lea otras preguntas en las etiquetas