Katselmus on tehty WP/Woofi -facebookryhmässä silmiin osuneesta koodista alkup. tekijän luvalla.
Tulee kokoajan tilauksia, joita perutaan paljon koska ei pystytä pitämään kiinni toimitusajoista. yli 9000 tuotetta ei pystytä oikein manuaalisesti päivittämään käsin joten tein pienenpienen (36 riviä) function joka selkeyttää Woocommercen stock statusta huomattavasti.
Jos saldo on:
< 0
= Tilaustuote alla lukee Nkpl jälkitoimituksessa0
= Tilaustuote -- Jos löytyy tukkurin saldokenttä niin alle tulee tukkurin saldot aina 10kpl saakka. Tämän jälkeen näytetään yli 10kpl tukkurilla. Tässä kohtaa myös tutkitaan mikä tukkuri on kyseessä ja tehdään sen perusteella arvio toimitusajasta.1 - 3
= Vain Nkpl varastossa> 3
= Nkpl varastossa
Funktio vaatii toimiakseen, että tuotteen metakenttiin(esim. acf) on tallennettu maahantuoja
ja haettu tukkurin varastotilanne wholesaleqty
esim. all import pro:n avulla.
- Funktiolle on hyvä tehdä kommenttiosio, jossa kerrotaan mitä funktio tekee ja mitä parametreja siihen syötetään. Nämä näkyvät koodieditorissa kun funktion nimeä hoveroi (jos koodieditorissa on php-tuki)
- Funktio ja muuttujat nimetään mahdollisimman selkeästi sen mukaan mitä ne tekevät/sisältävät. Koodieditorit yleensä osaavat täyttää nimet automaattisesti, eli ei haittaa vaikka ne ovat vähän pidempiä. Lyhenteet ja kirjainmuuttujat jne. tekevät ongelmien selvittelystä vaikeaa
- Funktiota usein jossain kohtaa tarvitaan "loopin ulkopuolella", joten laita valinnaiseksi parametriksi
$product_id
ja hae se sitten funktion sisälläget_post_ID()
:llä. Vältäglobal $post
käyttöä jos suinkin mahdollista, ettei hajota mitään vahingossa - Tarkista mahdollisimman alussa, onko funktiolle elintärkeät asiat, kuten tässä tapauksessa
$product_id
olemassa, ettei suorittaminen hajoa rumasti kun ID onkin jotain muuta. - Kun ei ole tarvetta ACF:n välissäololle, niin
get_post_meta
on nopeampi tapa hakea kenttien arvot. Hakiessa tyypitä numerot numeroiksi, niin IF-lauseissa voi käyttää turvallisempia "tiukkoja" vertauksia, eli kolmea on-yhtä-kuin merkkiä===
. - Syvät if-rakenteet ovat yleensä todella hankalia, varsinkin kun pitää alkaa selvittää missä vika. Tässäkin oli kerrosteltu turhan paljon, kun vähemmälläkin selviää, kun hieman yhdistelee kyselyitä ja simppelimmät kysymykset voi myös hoitaa "shorthandina":
$output = $stock ? $stock . ' varastossa' : 'varasto tyhjä!';
- Arraylla eli listalla voi usein tehdä tälläisistä if-else tilanteista paljon selkeämpiä, kuten tässä tein noille arvioiden lukumäärille. Nyt on helppo päivittää pari tukkuria lisää tms. jatkosäätöä
- Käytä PHP:n string appendia
.=
sen sijaan että echotat jokaisessa päätepisteessä jotain. Silloin voi "kerätä" stringin pitkin funktiota ja lopussa echottaa. Helpottaa jälleen ongelmien selvittämistä kun funktiossa on vain yksi echo. Sen lisäksi... - Kaikki mitä echotat, pitää aina escapettaa. Tätä ei voi liikaa alleviivata eikä poikkeuksia sallita. 😃
- Valmistaudu muihin kieliversioihin. Jos ei niitä nyt tarvita, niin jonain päivänä asiakas haluaa ne. Ei ole suuri vaiva wrapata stringejä
esc_html__()
esc_html_e()
ym. vastaaviin WP:n funktioihin, joten kannattaa ottaa se ihan tavaksi. sprintf -funktiolla voi lisätä tekstin sekaan muuttujat%s
, jolloin lauserakennetta voi kääntäessä helposti muuttaa, kuten usein on tarpeen.