Aggiungere un prodotto variabile in WooCommerce programmaticamente

5 dic 2012, 12:24:04
Visualizzazioni: 19.7K
Voti: 5

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.

2
Commenti

Scusa, avrei dovuto inserire il link a questo nel mio primo commento (cancellato). :::: Hai provato wp_set_object_terms al di fuori della chiamata Ajax? E l'$append argument? :::: In un prodotto che già ha una variazione, come vengono memorizzate queste informazioni nel database? (E quest'ultima domanda è solo un'idea per il troubleshooting. Almeno, è quello che proverei anch'io...)

brasofilo brasofilo
5 dic 2012 13:32:52

1°: Per favore aggiorna la tua risposta invece di lasciare commenti. 2°: Usa lettere maiuscole/minuscole. Almeno questo non è una chat, ma un Q/A che dovrebbe essere una facile referenza per gli utenti futuri. 3°: Perché il problema non è AJAX? 4°: Se non è AJAX e nessuno ha capito la tua domanda finora, potresti considerare di riformulare la domanda.

kaiser kaiser
5 dic 2012 13:41:22
Tutte le risposte alla domanda 1
0

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);
6 dic 2012 11:55:46