✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Opas: Muuta hintoja WooCommercessa koodin mukaan

10

Tämä viesti on sinulle, joka haluat lisätä koodin, joka säätää hintoja WordPress WooCommerce -verkkokaupassasi. Voit joko korottaa hintoja tai alentaa niitä. Ja miten ja mistä säädöt tulevat, riippuu täysin tapauksestasi. Verkkokauppasi voi toimia kullekin rekisteröityneelle käyttäjälle asetettujen prosenttiosuuksien alennuksella, mukautetulla maailmanlaajuisella asetuksella WooCommerce-asetuksissa, kiinteästi koodatulla kiinteällä summalla tai jollakin jokaiselle tuotteelle tai tuoteryhmälle asetettuna.

Olen yrittänyt tehdä koodista mahdollisimman yleisen, jotta voit muokata sitä tapauksesi mukaan. Minun tapauksessani hinnanmuutokset tulevat käyttäjän metana lisätystä prosentuaalisesta alennuksesta.

Koodi on päivitetty toimimaan WooCommerce 3.x:lle ja uudemmille. En voi taata, että se toimii vanhemmissa versioissa.

Vaihe 1: Tee koodillesi paikka

Ensimmäinen askel on helppo; tarvitset paikan koodin lisäämiseen. Tämä riippuu täysin sinusta. Voit lisätä tämän suoraan teemaasi functions.phptai jonnekin laajennustiedostoihisi. Haluan työskennellä luokkien kanssa, jotka pitävät kaiken kauniisti yhdessä paikassa. Yksinkertaisuuden vuoksi laitan luokalle alihakemiston teemaani /src/ja sisällytän ja instantoin sen functions.php.

require_once(get_stylesheet_directory().'/src/ChangePrices.php'); new ChangePrices();

Muokkaa tätä vaihetta tapauksesi mukaan.

Vaihe 2: Päätä, miten hinnansäätöjen tulisi toimia

Tämä vaihe saattaa olla sinulle jo selvä – tässä sinun on tiedettävä, miten ja mistä saat hinnanmuutoksen. Lopullisen tavoitteen tulee olla luku, jolla hinnat lisätään, vähennetään, kerrotaan tai jaetaan.

Minun tapauksessani jokaisella käyttäjällä on käyttäjän meta, joka sisältää prosentuaalisen alennuksen; numero väliltä 0 – 99. Sivuston ylläpitäjä voi asettaa alennuksen jokaiselle käyttäjälle. En näytä koodia käyttäjän metakentän lisäämiseksi, koska tämä ei ehkä ole sinua varten ja se on helppo tehdä esim. Advanced Custom Fields -kentillä.

Luokassani pidän luokkamuuttujaa, joka constructorissa asetetaan kertoimeksi. Riippuen siitä, onko käyttäjä kirjautunut sisään, haen tallennetun alennuksen käyttäjältä ja luon siitä kertoimen. Oletusarvoisesti kertoimen tulee olla 1. Hinta 1 = sama hinta kuin ennen. Mutta esimerkiksi 10 %:n alennuksella kerroin olisi 0,9. Hinta 0,9 = hinta alennettu 10 %.

Nyt kun minulla on käyttövalmis kerroin, on aika tutkia hintojen säätämistä WooCommercessa.

Vaihe 3: Hintasuodattimet WooCommercessa

WooCommercessa on yksi suodatin yksinkertaisille, ryhmitetyille ja ulkoisille tuotetyypeille ja toinen muuttuville tuotetyypeille. Suosittelen, että lisäät molemmat suodattimet kattamaan kaikki tuotetyypit. Tämän lisäksi WooCommerce toimii kolmella lisähintasuodattimella:

  • Normaalihinnat (woocommerce_product_get_regular_priceja woocommerce_product_variation_get_regular_price)
  • Alennushinnat (woocommerce_product_get_sale_priceja woocommerce_product_variation_get_sale_price)
  • Nykyinen aktiivinen hinta (woocommerce_product_get_priceja woocommerce_product_variation_get_price). Nykyinen aktiivinen hinta noudetaan joko normaalihinnasta tai alennushinnasta.

Nyt voit yksinkertaisesti suodattaa nykyisen aktiivisen hinnan ja kutsua sitä päiväksi, mutta se riippuu siitä, kuinka haluat käsitellä hintojen näyttämistä verkkokaupassasi. Muista, että oletusarvoisesti myynnissä olevissa tuotteissa näkyy vanha hinta (normaalihinta) yliviivattuina ja sen vieressä alennushinta (aktiivinen hinta). Jos suodatat vain x_get_priceja tuote on alennuksessa, vanha hinta näytetään alennuksella.

Tästä syystä päätän suodattaa sekä aktiivisen nykyhinnan (x_get_price) että normaalihinnan (x_get_regular_price), koska en halua hämmentää verkkokauppani käyttäjiä.

Hintasuodattimen kirjoittaminen

Kaikki neljä suodatinta viittaavat samaan toimintoon. Funktion sisällä kerrotaan vain annettu hinta luokkamuuttujalla. Muista, että jos alennusta ei ole asetettu, kerroin on 1, jolloin hinta ei muutu.

Huomaa, että kaikki suodattimet tarjoavat tuoteobjektin toisena parametrina. Jos halusit muokata hintoja tuotteiden mukaan, voit muokata koodia niin tehdäksesi.

Jos tarkistat verkkokauppasi ollessasi kirjautuneena sisään alennuksella, sinun pitäisi nyt nähdä alennettuja hintoja! Emme kuitenkaan ole vielä täysin valmiita. WooCommerce teki joitain muutoksia 2.4.7:ään (lue lisää täältä ), jotka vaikuttavat muuttuvien tuotteiden dynaamiseen hinnoitteluun.

Vaihtelevien tuotteiden hintojen käsittely

Jotta dynaaminen hinnoittelu toimisi muuttuvissa tuotteissa, sinun tulee lisätä yllä linkitetyssä blogikirjoituksessa mainitut suodattimet. woocommerce_variation_prices_price(ja vastaava normaalihintasuodatin woocommerce_variation_prices_regular_price) ja suodatin woocommerce_get_variation_prices_hash. Hajautussuodatin käsittelee WooCommercen sisäistä välimuistia – ja meidän on pyydettävä WooCommercea tyhjentämään se oikein, kun muokkaamme hintoja koodilla.

Kaksi ensimmäistä hintasuodatinta noudattavat samaa menettelyä kuin adjustPrice(), mutta määritän niille eri toiminnon, koska parametrit ovat erilaiset. Mitä tulee hash-suodatintoimintoon, meidän on lisättävä hash-taulukkoon tunnistaaksemme, milloin välimuisti tulee tyhjentää. Käyttäjätunnuksen lisääminen on hyvä idea, koska kerroin on yksilöllinen jokaiselle käyttäjälle.

Lopulta sen pitäisi olla!

Huomaa, että sinulla on pääsy koko tuoteobjektiin kaikissa suodattimissa (myös muunnelmaobjektissa kahdessa viimeisessä). Tämä on hyödyllistä tapauksissa, joissa haluat säätää hintoja tuotetietojen perusteella; kuten sulkemalla pois tietyt tuotteet alennuksesta tai soveltamalla alennusta tuotteen luokkiin. Sinun pitäisi olla melko yksinkertaista säätää koodia tarpeisiisi.

Täydellinen lopullinen koodi

Kuten tavallista, toivon, että olet oppinut jotain seuraamalla tätä viestiä vaihe vaiheelta, mutta annan koko luokan viitteeksi:

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja