X

Woocommerce: crearea unei comenzi prin program la inregistrarea utilizatorului

By

Traian

Blog IT, PHP, Uncategorized, Wordpress

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!

 

 

 

Comments are closed.