Aggiungere un prodotto variabile in WooCommerce programmaticamente
Come posso trasformarlo in un prodotto variabile e aggiungere le variazioni? Le variazioni vengono gestite come attributi?
Questo codice crea un prodotto e aggiunge un attributo (taglia XL) ma non riesco a fare in modo che quell'attributo venga usato come variazione, con un prezzo personalizzato (ecc).
Questa è una funzione chiamata via ajax
function createnewproduct(){
$new_post = array(
'post_title' => "Prodotto Variabile Personalizzato",
'post_content' => 'Lorem ipsum dolor sit amet...',
'post_status' => 'publish',
'post_type' => 'product'
);
$skuu = randomsku('csm','custom',6);
$post_id = wp_insert_post($new_post);
update_post_meta($post_id, '_sku', $skuu );
update_post_meta( $post_id, '_price', "25" );
// Lo rendo variabile ma le variazioni non vengono aggiunte!
wp_set_object_terms ($post_id, 'variable', 'product_type');
wp_set_object_terms( $post_id, 'XL', 'pa_size' );
// tutto funziona bene ma
// come faccio a rendere l'attributo "pa_size" una variazione?
update_post_meta( $post_id, '_visibility', 'search' );
update_post_meta( $post_id, '_stock_status', 'instock');
}
Questa funzione dichiara in WooCommerce che il nuovo prodotto aggiunto è un prodotto variabile e aggiunge un attributo "taglia". Il problema è come dire a WooCommerce che l'attributo "taglia" è una variazione.

Trovata la soluzione per rendere un attributo di prodotto una variazione. Supponiamo di avere:
wp_set_object_terms( $post_id, 'XL', 'pa_size' );
Quello sopra è un attributo personalizzato (un attributo per la taglia). Per renderlo una variazione è necessario fare questo:
$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);
