Añadir un producto variable en WooCommerce programáticamente

5 dic 2012, 12:24:04
Vistas: 19.7K
Votos: 5

¿Cómo puedo convertirlo en un producto variable y añadir variaciones? ¿Se manejan las variaciones como atributos?

Este código crea un producto y añade un atributo (talla XL) pero no puedo hacer que ese atributo se use como variación, con un precio personalizado (etc).

Esta es una función llamada vía ajax

function createnewproduct(){
$new_post = array(
    'post_title' => "Variable Personalizado",
    'post_content' => 'Lorem ipsum dolor sit amet...',
    'post_status' => 'publish',
    'post_type' => 'product'
);

$skuu = randomsku('csm','personalizado',6);
$post_id = wp_insert_post($new_post);
update_post_meta($post_id, '_sku', $skuu );
update_post_meta( $post_id, '_price', "25" );

//¡Lo hice variable pero no se añaden las variaciones!
wp_set_object_terms ($post_id, 'variable', 'product_type');
wp_set_object_terms( $post_id, 'XL', 'pa_size' );
//todo funciona bien pero
//¿cómo hago que el atributo "pa_size" sea una variación?

update_post_meta( $post_id, '_visibility', 'search' );
update_post_meta( $post_id, '_stock_status', 'instock');

}

Esta función declara en WooCommerce que el nuevo producto añadido es un producto variable y añade un atributo "talla". El problema es cómo le decimos a WooCommerce que el atributo "talla" es una variación.

2
Comentarios

Lo siento, debería haber enlazado a esto en mi primer comentario (eliminado). :::: ¿Has probado wp_set_object_terms fuera de la llamada Ajax? ¿Qué hay del argumento $append? :::: En un producto que ya tiene una variación, ¿cómo se almacena esta información en la base de datos? (Y esta última pregunta es solo una idea para solucionar problemas. Al menos, eso es lo que yo también intentaría...)

brasofilo brasofilo
5 dic 2012 13:32:52

1º: Por favor, actualiza tu respuesta en lugar de dejar comentarios. 2º: Usa mayúsculas/minúsculas. Al menos esto no es un chat, sino un formato de preguntas/respuestas que debería ser una referencia fácil de leer para futuros usuarios. 3º: ¿Por qué el problema no es AJAX? 4º: Si no es AJAX y nadie ha entendido tu pregunta hasta ahora, podrías considerar reformular la pregunta.

kaiser kaiser
5 dic 2012 13:41:22
Todas las respuestas a la pregunta 1
0

Encontré la solución para convertir un atributo de producto en una variación. Supongamos que tenemos:

wp_set_object_terms( $post_id, 'XL', 'pa_size' );

Lo anterior es un atributo personalizado (un atributo de talla). Para convertirlo en una variación, necesitas hacer esto:

$thedata = Array('pa_size'=>Array(
        'name'=>'pa_size',
        'value'=>'',
        'is_visible' => '1', 
        'is_variation' => '1',
        'is_taxonomy' => '1'
        ));
update_post_meta( $post_id,'_product_attributes',$thedata);
6 dic 2012 11:55:46