Acasă » Blog » Woocommerce: crearea unei comenzi prin program la inregistrarea utilizatorului

Woocommerce: crearea unei comenzi prin program la inregistrarea utilizatorului

Share this post on social!

Buna!

Tema de astazi:

Woocommerce. Cum putem crea din program o comanda in urma unui eveniment?

Generarea comenzii la verificarea utilizatorului proaspat inregistrat

Ne referim la situatia in care magazinul virtual WordPress + Woocommerce beneficiaza de un plugin de verificare a clientului magazinului prin link trimis in contul de email.

Dupa inregistrarea clientului ca utilizator al magazinului virtual, inainte ca acesta sa poata intra in zona lui de administrare va trebui sa acceseze un link de verificare trimis pe adresa de email mentinata la inregistrare.

La efectuarea verificarii putem atasa o actiune pe care o dorim. In cazul nostru sa cream automat o comanda de achizitie a unui produs ales de noi din magazin. Iata codul:

 

function sweb_send_author_when_email_was_verified($user_id) {
sweb_creare_comanda_finalizata_1_comunicat_gratuit($user_id);
}

add_action('xlwuev_on_email_verification', 'sweb_send_author_when_email_was_verified', 20, 1);

function sweb_creare_comanda_finalizata_1_comunicat_gratuit($user_id) {

//Aici obtinem datele utilizatorului, inclusiv datele de facturare

$usermeta =array();
$usermeta1 = get_user_meta($user_id);
foreach($usermeta1 as $key => $vect){
$usermeta[$key] = $vect[0];
}

//aici construim vecotrul cu datele de facturare atasate comenzii

$billing = array();

$billing[‘first_name’] = isset($usermeta[‘billing_first_name’]) && $usermeta[‘billing_first_name’] != ” ? $usermeta[‘billing_first_name’] : $usermeta[‘first_name’];
$billing[‘last_name’] = isset($usermeta[‘billing_last_name’]) && $usermeta[‘billing_last_name’] != ” ? $usermeta[‘billing_last_name’] : $usermeta[‘last_name’];
$billing[‘company’] = isset($usermeta[‘billing_company’]) && $usermeta[‘billing_company’] != ” ? $usermeta[‘billing_company’] : $usermeta[‘denumire_companie’];

$billing[‘address_1’] = isset($usermeta[‘billing_address_1’]) && $usermeta[‘billing_address_1’] != ” ? $usermeta[‘billing_address_1’] : $usermeta[‘adresa’];
$billing[‘address_2’] = isset($usermeta[‘billing_address_2’]) && $usermeta[‘billing_address_2’] != ” ? $usermeta[‘billing_address_2’] : ”;
$billing[‘city’] = isset($usermeta[‘billing_city’]) && $usermeta[‘billing_city’] != ” ? $usermeta[‘billing_city’] : $usermeta[‘oras’];
$billing[‘state’] = isset($usermeta[‘billing_state’]) && $usermeta[‘billing_state’] != ” ? $usermeta[‘billing_state’] : $usermeta[‘judet’];
// $billing[‘country’] = isset($usermeta[‘billing_country’]) && $usermeta[‘billing_country’] != ” ? $usermeta[‘billing_country’] : ‘RO’;
$billing[‘phone’] = isset($usermeta[‘billing_phone’]) && $usermeta[‘billing_phone’] != ” ? $usermeta[‘billing_phone’] : $usermeta[‘tel_contact’];
// $billing[‘billing_state’] = isset($usermeta[‘billing_state’]) && $usermeta[‘billing_state’] != ” ? $usermeta[‘billing_state’] : $usermeta[‘judet’];
$billing[’email’] = isset($usermeta[‘billing_email’]) && $usermeta[‘billing_email’] != ” ? $usermeta[‘billing_email’] : $usermeta[’email_contact’];

//acestea sunt date de facturare meta, adaugate custom
$billing[‘cui’] = isset($usermeta[‘billing_cui’]) && $usermeta[‘billing_cui’] != ” ? $usermeta[‘billing_cui’] : $usermeta[‘cui’];
$billing[‘nr_reg_com’] = isset($usermeta[‘billing_nr_reg_com’]) && $usermeta[‘billing_nr_reg_com’] != ” ? $usermeta[‘billing_nr_reg_com’] : $usermeta[‘nr_reg_com’];

// Acum cream comanda
$order = wc_create_order(array(‘customer_id’ => $user_id));

// Adaugam o bucata din produsul cu ID-ul 22 la comanda
$order->add_product(get_product(’22’), 1); // Acesta este un produs simplu
$order->set_address($billing, ‘billing’);

//adaug cupon de reducere
//$order->add_coupon(‘1!KCOM1@’,’100′,’0′); // parametrii: $couponcode, $couponamount,c$coupon_tax

//calculez totalul sumei pe comanda
$order->calculate_totals();
//Finalizez comanda
$order->update_status(“completed”);
$order->save();
}

Practic, in functia sweb_creare_comanda_finalizata_1_comunicat_gratuit() comentariile spun totul

Functia este apelata la hook-ul de actiune: xlwuev_on_email_verification specific pluginului instalat pe site care se executa atunci cand linkul de verificare este accesat din contul de email al clientului.

Sper ca va fi de folos cuiva!

Zi frumoasa!

 

 

Traian Constantin Predan

Traian Constantin Predan

Inginer absolvent al Politehnicii București proiectează și construiește sisteme online. Lucrează proiecte extrem de diverse, îi plac viziunile noi care provoacă la dezvoltarea unor soluții tehnice eficiente și stabile.