Adăugarea unui produs variabil în WooCommerce programatic

5 dec. 2012, 12:24:04
Vizualizări: 19.7K
Voturi: 5

Cum pot să-l fac un produs variabil și să adaug variații? Sunt variațiile tratate ca atribute?

Acest cod creează un produs și adaugă un atribut (mărimea XL) dar nu pot face ca acel atribut să fie folosit ca variație, cu un preț personalizat (etc).

Aceasta este o funcție apelată prin ajax

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

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

//l-am făcut variabil dar variațiile nu sunt adăugate!
wp_set_object_terms ($post_id, 'variable', 'product_type');
wp_set_object_terms( $post_id, 'XL', 'pa_size' );
//totul funcționează bine dar
//cum fac atributul "pa_size" să fie o variație?

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

}

Această funcție declară în WooCommerce că noul produs adăugat este un produs variabil și adaugă un atribut "mărime". Problema este cum îi spunem WooCommerce că atributul "mărime" este o variație.

2
Comentarii

Scuze, ar fi trebuit să link-uiesc asta în primul meu comentariu (șters). :::: Ai încercat wp_set_object_terms în afara apelului Ajax? Dar despre $append argument? :::: Într-un produs care deja are o variație, cum este stocată această informație în baza de date? (Și această ultimă întrebare este doar o idee de troubleshooting. Cel puțin, asta aș încerca și eu...)

brasofilo brasofilo
5 dec. 2012 13:32:52

1: Te rog actualizează răspunsul tău în loc să lași comentarii. 2: Folosește litere mari/mici. Cel puțin, acesta nu este un chat, ci o întrebare/răspuns care ar trebui să fie ușor de citit ca referință pentru utilizatorii viitori. 3: De ce problema nu este AJAX? 4: Dacă nu este AJAX și nimeni nu a înțeles întrebarea ta până acum, ai putea să reconsideri reformularea întrebării.

kaiser kaiser
5 dec. 2012 13:41:22
Toate răspunsurile la întrebare 1
0

Am găsit soluția pentru a transforma un atribut al produsului într-o variație. Să presupunem că avem:

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

Codul de mai sus este pentru un atribut personalizat (un atribut de mărime). Pentru a-l transforma într-o variație, trebuie să faceți următoarele:

$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 dec. 2012 11:55:46