Acasă » Blog » Modificare prețuri produse Woocommerce prin program

Modificare prețuri produse Woocommerce prin program

Share this post on social!
Optimizare site Woocommerce pentru Google

O sarcină de modificare a prețurilor tuturor produselor într-un magazin online bazat pe WordPress + Woocommerce este de actualitate în aceste zile când toate prețurile o iau “razna”.

Dacă magazinul tău online are câteva produse, rezolvi simplu această sarcină editând fiecare preț din panoul de administrare, în ecranul de editare a produsului.

Dar ce faci daca ai zeci, sute sau mii de produse? Este o sarcină care se poate rezolva la fel de simplu… pentru un programator care vă poate ajuta în acest sens.

Modificarea prețurilor produselor Woocommerce din program

Următoarea funcție scrisă în limbajul PHP poate realiza această sarcină în 30 de secunde pentru mii de produse. Condiția este să livrăm la intrare atributul pentru variațiile de produs, prețurile standard pentr fiecare variație bazată pe atributul respectiv și formula de calcul pentru prețul de vânzare.

În cazul prezentat mai jos, rezervăm locuri de parcare pentru un număr de zile selectat de către client.

Datele de intrare în funcția descrisă sunt:

  • atribut: numărul de zile de parcare ($atribut = ‘numar_zile’)
  • prețul standard funcție de numărul de zile de parcare ($val_standard)
  • discount procentual pentru calculul prețului de vânzare ($discount)

Funcția care realizează modificarea din program a prețurilor produselor

<?php
//set preturi standard pentru variatiile de produs functie de valoarea atributului numar zile
//valoarea este indexul vectorului + 1
$val_standard = [];

$val_standard[] = 42;
$val_standard[] = 89;
$val_standard[] = 119;
$val_standard[] = 149;
$val_standard[] = 179;
$val_standard[] = 208;
$val_standard[] = 238;
//.....
modific_preturi_per_zile_new(1003, 'numar_zile', $val_standard, 30);

/**
 * Modificare preturi standard, de vanzare, pret efectiv functie de valorile unui atribut pentru variatiile unui produs woocommerce
 *
 * @param [integer] $product_id id produs woocommerce
 * @param [string] $atribut atribut variatie produs
 * @param [array] $val_standard preturi standard pentru fiecare variatie de produs
 * @param [integer] $discount procent
 * @return void
 */
function modific_preturi_per_zile_new($product_id, $atribut, $val_standard, $discount)
{
    
    $atribut = 'numar-zile';

    //produsul unic rezervare loc parcare
    //$product_id = 677; // 10120

    //obtin obiect produs dupa $product_id
    $product = wc_get_product($product_id);

    //obtin atribute produs
    $atribute = $product->get_attributes();

    //obtin toate atributele de tip $atribut=numar_zile (pentru rezervare loc parcare)
    $terms = $atribute['pa_' . $atribut]->get_slugs();

    $data_store = WC_Data_Store::load('product');

    //parcurg fiecare termen (atribut)
    foreach ($terms as $t => $t_slug) {

        $match_attributes =  array(

            "attribute_pa_" . $atribut => $t_slug
        );

        //obtin variante de produs care au respectiva valoare a atributului
        $variation_id = $data_store->find_matching_product_variation(

            $product,

            $match_attributes
        );

        //daca avem o variatie de produs
        if ($variation_id) {

            //numarul de zile
            $nrz = (int) $t_slug;

            //obtin obiect variatie produs
            $variable_product = wc_get_product($variation_id);

            //valoare regular price
            $regular_price = $val_standard[($nrz - 1)];

            //set discount incepand cu ziua a doua
            if ($nrz >= 2) {

                //valoare pret vanzare
                $sale_price = sweb_red($regular_price, false, $discount);

                //setez petul de vanzare
                $variable_product->set_sale_price($sale_price);

                //setez pretul
                $variable_product->set_price($sale_price);
            } else {
                //$sale_price = sweb_red($regular_price, false, $discount);

                //setez pretul
                $variable_product->set_price($regular_price);
            }

            //setez pretul standard
            $variable_product->set_regular_price($regular_price);

            //salvez variatia de produs dupa modificarile facute
            $variable_product->save();
        }
    }
}

Exemplu de modificare prețuri în masă la toate variațiile de produs Woocommerce prin programare web

La Sector web am efectuat concret această modificare de prețuri masivă din program pentru site-ul web parcareautopeni.ro cu ocazia trecerii la prețuri cu TVA.

Tabela de prețuri din pagina de tarife de pe site-ul parcareautopeni.ro este generată automat, similar cu tabela de prețuri din homepage de sub slider-ul introductiv.

Dezvoltare front-end Safari Iphone
Modificare prețuri în masă pentru toate variațiile de produs Woocommerce

Lasă un răspuns

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.