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

Mukautetun alennuksen lisääminen ohjelmallisesti WooCommerce Checkoutiin

97

Tässä viestissä tarkastellaan, kuinka lisäämme alennuksia ohjelmallisesti ja automaattisesti. Tätä varten hyödynnämme WooCommercen kuponkitoimintoa, mutta teemme sen automaattiseksi ja piilotamme asiakkaille sen, että se on kuponki. Olen pyrkinyt pitämään koodin mahdollisimman yleisenä, sillä alennusten hakemisen ehdot voivat vaihdella paljon tämän lukevan kohdalla.

Miksi kupongit ovat tapa tehdä se

Vanhemmissa WooCommercen versioissa meillä oli muutamia ("hakkeroituja") vaihtoehtoja alennusten lisäämiseen koodilla, esimerkiksi negatiivisen luvun antaminen add_fee()tai työskentely sen kanssa get_discounted_price(). Valitettavasti nämä menetelmät eivät enää toimi tai niitä pidetään vanhoina, ja ne poistetaan myöhemmissä versioissa. Rakenteellisesti hyvä tapa lisätä alennuksia on käyttää WooCommercen sisäänrakennettua kuponkitoimintoa.

Kuponkia ei kuitenkaan yleensä voi käyttää automaattisesti ostoskoriin. Se edellyttää, että asiakas kirjoittaa manuaalisesti kuponkikoodin, joka hänelle on täytynyt antaa. Joissakin verkkokaupoissa halutaan vain, että alennusta sovelletaan automaattisesti, kun tietty ehto on täytetty ilman, että asiakkaan tarvitsee tehdä mitään. Sen korjaamme koodilla.

Mukautetut alennukset kuponkeilla

Sinun on luotava koodilla varustettu kuponki ja määritettävä se haluamillasi parametreilla. Voit ottaa sen käyttöön, poistaa sen ja muuttaa eri tulosteita aina, kun kuponki näkyy asiakkaalle. Vaihtoehtoisesti, jos et halua kuponkeja asiakkaiden saataville verkkokauppaasi, katsomme joitain yksinkertaisia ​​temppuja piilottaaksemme vaihtoehdot kuponkikoodien syöttämiseen manuaalisesti.

Alla olevassa koodiesimerkissä ryhmittelen kaiken siihen liittyvän koodin PHP-luokkaan. Tämä auttaa puhdistamaan koodia, mutta on erityisen hyödyllinen, koska haluamme viitata kuponkikoodiin useita kertoja. Sen määrittäminen luokkamuuttujaksi on parempi kuin sen toistaminen useissa funktioissa.

Luo alennuksesi kupongiksi

Ensimmäinen vaihe on kupongin luominen, joka on alennuksesi "paikkamerkki". Helpoin on luoda sellainen WooCommerce-järjestelmänvalvojassa (WooCommerce > Kupongit > Lisää kuponki).

Jos haluat luoda kupongin ohjelmallisesti, kuponki on itse asiassa viesti, jonka avulla voit luoda wp_insert_post()– mutta sinun on huolehdittava kuponkiviestin luomisesta vain kerran. WooCommercella on lyhyt opas kuponkien luomiseen ohjelmallisesti.

Anna kuponkikoodiksi ainutlaatuinen etana ja määritä vähintään alennussumma (joko prosentti tai kiinteä maksu). Mitä tulee alla olevaan koodiesimerkkiin, olen luonut kuponkikoodin " example" (suosittelen kuitenkin luovamman ja sopivamman nimen käyttämistä).

Luodaan PHP-luokka, joka sisältää kaiken koodimme

Siirrytään vihdoin koodaukseen! Voit määrittää tämän luokan suoraan teemasi functions.php, laajennuskoodin tai mukana tulevan erillisen tiedoston sisällä.

class AWPCustomDiscount { private $coupon_code = 'example';   public function __construct() {   } } new AWPCustomDiscount();

Nimeä luokkasi haluamallasi tavalla ja korvaa luokan muuttuja $coupon_codemillä tahansa kupongin nimellä. Älä unohda alustaa luokkaa lopussa (new AWPCustomDiscount()).

Jos olet ohjelmoinut oliopohjaisesti aiemmin, tämän pitäisi olla sinulle tuttua. Jos ei, älä huoli, tämän pitäisi olla helppo seurata. Lisäämme tähän muutamia toimintoja ja viittaamme kuponkikoodiin $this->coupon_code. Aloitetaan koodilla, joka on vastuussa kupongin lisäämisestä, kun ehdot täyttyvät.

Kupongin käyttäminen ohjelmallisesti

Kokemuksesta olen oppinut, että koodin kiinnittäminen kuponkien käyttämistä ja poistamista varten toimii parhaiten ja johdonmukaisimmin käyttämällä seuraavia kahta koukkua; yksi ostoskoriin (woocommerce_before_cart) ja yksi kassalle (woocommerce_before_checkout_form).

Toiminnon sisällä meidän tarvitsee vain tarkistaa haluamamme ehdot. WooCommerce tarjoaa toimintoja, joilla saamme käsiinsä ostoskorin esineen, with WC()->cartjoiden avulla voimme saada kaikki tarvitsemamme tiedot ostoskorista, kuten sen tuotteet ja kokonaissummat. Esimerkkinä alla oleva koodi antaa alennuksen, jos ostoskorin kokonaissumma (ilman alennuksia) ylittää tietyn summan.

Meidän tulee myös varmistaa, että jos ehdot eivät täyty, meidän tulee poistaa alennus, jos se on aiemmin lisätty. Kuvittele esimerkissämme, että asiakas ylitti enimmäismäärän, mutta meni sitten ostoskoriin, poisti joitain tuotteita ja palasi siten takaisin vaaditun summan alapuolelle. Koska kuponkeja ei käytetä automaattisesti, kaikki käytetyt kupongit on myös poistettava ohjelmallisesti.

Käyttämälläapply_coupon

Kupongit lisätään ostoskoriobjektiin apply_coupon()antamalla kuponkikoodi parametrina ja ne poistetaan ostoskoriobjektista remove_coupon()käyttämällä kuponkikoodia parametrina. Tarpeeksi yksinkertainen. Voimme myös käyttää get_applied_coupons()ostoskoriobjektissa niin osuvasti nimettyä toimintoa tarkistaaksemme, onko kuponkimme jo käytetty.

Jos et ole perehtynyt oliopohjaisen PHP:n käyttämiseen WordPressissä; Tässä on lyhyt yhteenveto siitä, miten yllä oleva toimii: __construct()Funktio suoritetaan aina, kun luokka alustetaan, minkä teemme heti luokan jälkeen. Sisälle __construct()lisäät yleensä kaikki koukut kuten normaalisti esimerkiksi sisällä functions.php. Jotta WordPress löytää funktiomme luokassamme, meidän on käskettävä koukku viittaamaan funktioon, joka on määritelty taulukossa, joka koostuu $this(luokkaobjektista) ja funktion nimestä.

Ohjelmoimme toiminnon sisällä addDiscount()olosuhteissamme. Yllä olevassa esimerkissä haen kärryn kokonaiskäytön WC()->cart->get_subtotal()ja vertaan sitä olosuhteisiini – yli 500.

Huomaa: Jos sinun on noudettava ja verrattava ostoskorin loppusummaa, muista, että suurin osa kokonaissummasta sisältää kuponkeja. Esimerkiksi tutumpi WC()->cart->get_cart_contents_total()palauttaa loppusumman ennen toimitusta, mutta mukaan lukien alennukset; Tämä tarkoittaa, että jos alennustasi on käytetty aiemmin, tätä summaa ei voi verrata.

Voit soittaa apply_coupon()tarkistamatta, onko kuponki jo käytetty (iftarkistus rivillä #14), koska toiminto apply_coupon()itse varmistaa, ettei se lisää sitä uudelleen, jos se on käytetty aiemmin. Tämä if-tarkistus kuitenkin estää asiakasta saamasta virheilmoituksen "Kuponki on jo käytetty" joka kerta kun ostoskoria päivitetään.

Näin alennuksesi näkyy ostoskorin loppusummassa ja kassalla:

Mukautetun alennuksen lisääminen ohjelmallisesti WooCommerce Checkoutiin

Alennusehdot

Kupongin ehdot riippuvat täysin sinusta ja tarpeistasi. Olen asettanut aiemmassa postauksessa muutamia esimerkkiehtoja mukautetun maksun lisäämiselle – esimerkiksi toimituspaikan tai ostoskorissa olevien tuotteiden mukaan. Voit myös verrata tämän päivän päivämäärää, jos halusit antaa erikoisalennuksen joulu- tai halloween-alennukseen tai antaa ehtoihin perustuvan alennuksen kirjautuneen asiakkaan luona.

Jos haluat mieluummin käyttää kuponkia itse kuponkiin määrittämiesi asetusten mukaan – esimerkiksi sulkea pois tai sisällyttää tiettyjä tuotetunnuksia, voit myös tehdä niin. Voit luoda kupongin kohteen kuponkikoodista seuraavasti:

Tämän kuponkiobjektin avulla sinulla on pääsy kaikkiin toimintoihin, joilla voit noutaa kaikki kuponkiin määrittämäsi asetukset. Esimerkiksi kuponkiin sisällytettävät tuotetunnukset:

Katso WC_Coupon-luokan dokumentaatiosta, kuinka saat tarvitsemasi paikan.

Korjaa kupongin näkyvä tarra

Kuponki pitäisi tähän mennessä lisätä ja poistaa, kun ostoskorisi täyttää tai ei täytä ehtojasi addDiscount(). Kuitenkin sekä ostoskorin että kassan loppusummataulukossa alennus näkyy muodossa "Kuponki: esimerkki" (tai mikä tahansa kuponkikoodisi). Tuo ei ole hyvä! Onneksi tämä tarra on helppo vaihtaa suodattimen avulla woocommerce_cart_totals_coupon_label. Lisäämme suodattimen suodattimeemme __construct()ja määritämme funktion:

Suodattimen avulla saamme pääsyn kuponkiobjektiin toisena parametrina. Kuponkiobjektin avulla voimme tarkistaa sen ominaisuuden code, vastaako se mukautettua kuponkikoodiamme vai ei. Jos näin on, palautamme haluamamme etiketin. Säädä tarratulostus haluamaasi mukaan. Muussa tapauksessa palautamme oletuskuponkitunnisteen.

Poista alennuksen käyttäjävaihtoehto

Toinen asia, jonka olet ehkä huomannut alennuksemme näyttämisessä ostoskorissa ja kassalla, on se, että sen summan jälkeen on linkki "[Poista]". Tämä on WooCommercen kuponkien oletuskäyttäytyminen, mutta meidän tapauksessamme se ei ole toivottavaa. Sekä siksi, että se saattaa hämmentää asiakkaita, että koska koodimme ottaisi sen uudelleen käyttöön poistamisen jälkeen.

WooCommerce tarjoaa suodattimen woocommerce_cart_totals_coupon_htmlsumman ulostulolle. Onneksi WooCommerce tarjoaa vain itse summan HTML-ulostulon kolmantena parametrina tälle suodattimelle. Voimme yksinkertaisesti palauttaa tämän sen sijaan, että varmistaisimme, että alennuksemme esitetään oikein valuutan ja kaiken kanssa.

Valinnainen: Kuponkitoimintojen piilottaminen asiakkaille

Kupongit on aktivoitava WooCommercessa, jotta alennustoimintomme toimisi, mutta huomaa, että tämä lisää asiakkaille mahdollisuuden syöttää kuponkikoodit manuaalisesti sekä ostoskoriin että kassalla. Jos et halua näyttää, että verkkokaupassasi on kuponkitoimintoja, etkä varsinkaan salli asiakkaita syöttämästä kuponkikoodeja manuaalisesti, voit myös tehdä niin.

Sen poistaminen kassalta

Kuponkitoiminnon poistaminen kassalta on helppoa ja sen voi tehdä luokkamme sisällä. Poistamme vain koukun, joka tekee kupongin "laatikon", kuten:

... public function __construct() { add_action('woocommerce_before_cart', [$this, 'addDiscount']); add_action('woocommerce_before_checkout_form', [$this, 'addDiscount']); add_filter('woocommerce_cart_totals_coupon_label', [$this, 'discountLabel'], 10, 2); add_filter('woocommerce_cart_totals_coupon_html', [$this, 'discountHtml'], 10, 3); remove_action('woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10); } ...

Sen poistaminen kärrystä

Kuponkikooditoiminnon poistaminen ostoskorista ei valitettavasti ole niin helppoa kuin se on kovakoodattu malliin. Sinun on ohitettava WooCommercen ostoskorimalli, jotta voit poistaa kuponkitoiminnon. Kopioi tiedosto kohteeseen pluginswoocommercetemplatescartcart.php.your-themewoocommercecartcart.php

WooCommercen mallitiedostot muuttuvat jatkuvasti, joten tarkan rivinumeron antaminen ei auttaisi. Mutta koodi, joka tulostaa syötteen ja kuponkipainikkeen, löytyy tiedoston alaosasta. näyttää vähän tältä:

Sinun on kommentoitava kuponkiin liittyvä tulos. Suosittelen lisäämään PHP-kommentin /*heti ennen if-tarkistusta ja sulkemaan sen */heti sulkuhakasulkeen jälkeen. Niin kuin:

Tässä vaiheessa verkkokauppasi kuponkitoimintojen tulisi olla käytännössä piilossa asiakkailta! Mutta mukautetun alennuksen pitäisi toimia täydellisesti.

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