Woocommerce rest api za znalce

Dakle muči me spajanje sa stranicom za ažuriranje cijena, količina itd.

Naime vanjski program koji je skladišni valjda mijenjati neće nikad.

Dohvaćaju sve sa:
…/wp-json/wc/v3/products

Pa vrte što treba.

No /products/ ne vraća varijacije koje imaju SKU.

A recimo:

/wp-json/wc/v3/products?sku=34667845677

vraća točno varijaciju koju tražim.

Kako da dohvatim sve , ali sve dakle da “flatam” simple products i variationas po SKU; kao da su svi jednostavni proizvodi?

Kako bi taj upit bio da se modificira?

ILI još bolje, jer nemam pristup aplikaciji da s strane Woocommerca PREPam neki prikaz za vansjke upite pa da pod /products/ po sku vidi listu svega?

Moram priznati da sam djelomično razumio tvoj upit.

Uzimam podatke iz 7 izvora i svi su različiti. Moj prijedlog je da probaš doći do API dokumentacije, sigurno imaju nešto.

Možeš probati modificirati upite “na slijepo”, ali šansa da ćeš napikati nešto što radi je minimalna i teži ka nuli.

/wp-json/wc/v3/products
S ovim sam dobio proizvode.
Dodao parametar id,SKU,variations.
Tako da vidim koji imaju varijacije.

U asocijativni dio polja response dakle imam
SKU
Id
Variations
No pod variations imam novi array po od varijacija i vuče isto
SKU,id

Problem mi je to sada flatati da bude sve jedna dimenzija polja.

Tako onda response daje sve proizvode kao
SKU
Id
Pa i varijacije pa mogu testirati da li onda remote request mijenja sve i na varijacijama sada kada ima u istom obliku
Id
SKU svake varijacije.

Sutra dam detalje pa ako netko može pomoći.

Inače to sam radio sa strane epa ka modify response.

Probao u insomnia i postman i dobijem skoro sve kako želim samo da nekako flatam polja na isti level.

Pitaj chatGPT. Meni programira ko veliki za custom funkcije u WP pa će znati i ovo. Samo mu lijepo objasni.

Povuci podatke u lokalnu tablicu i onda čarobiraj s njima po želji.

Hm…

	{
		"id": 10395,
		"sku": "8017924000476",
		"name": "TEST BOJA 566",
		"variations": []
	},
	{
		"id": 10353,
		"sku": "",
		"name": "TEST BOJA",
		"variations": [
			{
				"id": 10354,
				"sku": "",
				"name": "TEST BOJA - 200ml"
			},
			{
				"id": 10355,
				"sku": "",
				"name": "TEST BOJA - 75ml"
			}
		]
	},

Dakle ovo pozivam sa
wp-json/wc/v2/products?_fields=id,sku,name,variations,&per_page=100&offset=1

E sad pod variations imam prazne stavke i negdje samo navedene IDeve.
Ja sam sa strane wordpressa stavio tamo da prema IDu povuče što želim, dakle
ID
SKU
NAME

no problem mi je kako to izvuči sada van jer response ide po proizvodima, i kada doše na varijabilni koji ima VARIATIONS key i neki values vrti FOREEACH petlju, za svaku varijaciju i napravi novi array. NO on bude kao dio vrijednosti KEYa VARIATIONS:

Ja trebam ovo iz VARIATIONS premjestiti ma svjejedno gdje, može i na kraj , no što god napravim ako išta probam staviti van foreach ostane prazno. Makar je varijabla koja to sprema inicijalizirana van petlje.

Već sam lud, imam sve dobio što mi treba samo trebam to sada formatirati. I nikako.

Kod koji priprema odgovor je:

<?php

function add_custom_value_to_product_response($response, $object, $request) {
    
     // spremaj temp varijacije
            $variation_data = array();
    

        // dohvati varijacije i što treba 
        $variations = $object->get_children();

        if (!empty($variations)) {
           

            // prođi varijacije za ID i SKU, NAME
            foreach ($variations as $variation_id) {
                $variation = wc_get_product($variation_id);
                $variation_data[] = array(
                    'id'   => $variation->get_id(),
                    'sku'  => $variation->get_sku(),
                    'name' => $variation->get_name(),
                );
            }
       //ovaj dio ga doda po varijations key. Ja trebam da ovo gore doda van u matičnu top level array, makar na kraj ili kako god.
           $response->data['variations'] = $variation_data;             
        }


    return $response;
}

add_filter('woocommerce_rest_prepare_product_object', 'add_custom_value_to_product_response', 10, 3);

Da dodam znači trebao bi dobiti ovo:

{
		"id": 10395,
		"sku": "8017924000476",
		"name": "TEST BOJA 566",
		"variations": [] // ovo isto opcija da se makne ali mislim da neće biti problem.
	},
	{
		"id": 10354,
		"sku": "",
		"name": "TEST BOJA - 200ml"
	},
	{
		"id": 10355,
		"sku": "",
		"name": "TEST BOJA - 75ml"
		}
	},

NAPOMENA sa REST API od WOOa sam radio ne baš puno obično samo za izmijene nekih stavki kada sam imao pristup sa obje strane upita i i same stranice. Ovjde moram prilagoditi response a to eto ide sporo.

Ma radim pokušaj kombiacije da synesis konekcija proradi s varijacijama na woocommercu koja njima uopće nije bitna, a lijen i su i razgovarati o tome a s njihove stane treba valjda pola dana posla.

Kaže lik da on ne pozna Woordpress. Poziv traži SKU i ID, I napravim da json ima sve ID i SKU, svih proizvoda i varijacija.
No tu nešto s njihove strane u ažuriranju cijena fali.

Probao sam za klijenta da ne prelazti na drugi sladišni program nešto riješiti.

Uspio flatati sve kako traže i ne radi za varijacije ništa.

A stav “programera” s kojim sam pričao je valjda da mu je teško uopće pričati o tome da mu netko drugi to riješi.

Strrašno, fuj, odvratno.

Klijent ima 3000 artikal i po 100 varijacija za neke pa što da sada radim?

Nastavno razgovoru, kažu nema šanse da oni nešto rade, ja odvojio 4 dana, htio podijeliti riješenje, ne da im se ni pričati o tome.

Sve klijente dalje selim uz preporulu što dalje.
Ako hoće išta ozbiljno što dalje od ovog skladišnog programa.

Eto dobra namjera opet mi eksplodirala u facu, pouka?

U HR malo će reagirati dobro ako im kaže da im možeš pomoći besplatno da njihovo nešto poboljšaš. Drugim riječima ne petljaj im se u posao.

Jupi :hugs:

Jesam ga mimo Synesisa uspio i budem im javio onako usput, a kod će dobiti nikad.
Dakle da radi sa tim fu***g varijacijama, ažuriranje cijena količina, barem dok ne pobjegnu od tamo, bude radilo.

Testirao sam radi i sa varijabilnim i običnim i radi relativno brzo, budem testirao još pa napravio neki log, i probao još ubrzati skriptu jer na dućanu bude 5-6 tisuća prozivoda od kojih zapravo možda je 1000 proizvoda sve ostalo su varijacije.

Toliko zaje**** a s druge strane je netko mogao dodati par linija koda koje sam pripremio, i sve 5.