{"id":233579,"date":"2023-02-17T10:09:00","date_gmt":"2023-02-17T07:09:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233579"},"modified":"2022-11-11T00:26:56","modified_gmt":"2022-11-10T21:26:56","slug":"mukautetun-alennuksen-lisaeaeminen-ohjelmallisesti-woocommerce-checkoutiin","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/mukautetun-alennuksen-lisaeaeminen-ohjelmallisesti-woocommerce-checkoutiin\/","title":{"rendered":"Mukautetun alennuksen lis\u00e4\u00e4minen ohjelmallisesti WooCommerce Checkoutiin"},"content":{"rendered":"\n<p>T\u00e4ss\u00e4 viestiss\u00e4 tarkastellaan, kuinka lis\u00e4\u00e4mme alennuksia ohjelmallisesti ja automaattisesti. T\u00e4t\u00e4 varten hy\u00f6dynn\u00e4mme WooCommercen kuponkitoimintoa, mutta teemme sen automaattiseksi ja piilotamme asiakkaille sen, ett\u00e4 se on kuponki. Olen pyrkinyt pit\u00e4m\u00e4\u00e4n koodin mahdollisimman yleisen\u00e4, sill\u00e4 alennusten hakemisen ehdot voivat vaihdella paljon t\u00e4m\u00e4n lukevan kohdalla.<\/p>\n<h2>Miksi kupongit ovat tapa tehd\u00e4 se<\/h2>\n<p>Vanhemmissa WooCommercen versioissa meill\u00e4 oli muutamia (&quot;hakkeroituja&quot;) vaihtoehtoja alennusten lis\u00e4\u00e4miseen koodilla, esimerkiksi negatiivisen luvun antaminen <code>add_fee()<\/code>tai ty\u00f6skentely sen kanssa <code>get_discounted_price()<\/code>. Valitettavasti n\u00e4m\u00e4 menetelm\u00e4t eiv\u00e4t en\u00e4\u00e4 toimi tai niit\u00e4 pidet\u00e4\u00e4n vanhoina, ja ne poistetaan my\u00f6hemmiss\u00e4 versioissa. Rakenteellisesti hyv\u00e4 tapa lis\u00e4t\u00e4 alennuksia on k\u00e4ytt\u00e4\u00e4 WooCommercen sis\u00e4\u00e4nrakennettua kuponkitoimintoa.<\/p>\n<p>Kuponkia ei kuitenkaan yleens\u00e4 voi k\u00e4ytt\u00e4\u00e4 automaattisesti ostoskoriin. Se edellytt\u00e4\u00e4, ett\u00e4 asiakas kirjoittaa manuaalisesti kuponkikoodin, joka h\u00e4nelle on t\u00e4ytynyt antaa. Joissakin verkkokaupoissa halutaan vain, ett\u00e4 alennusta sovelletaan automaattisesti, kun tietty ehto on t\u00e4ytetty ilman, ett\u00e4 asiakkaan tarvitsee tehd\u00e4 mit\u00e4\u00e4n. Sen korjaamme koodilla.<\/p>\n<h2>Mukautetut alennukset kuponkeilla<\/h2>\n<p>Sinun on luotava koodilla varustettu kuponki ja m\u00e4\u00e4ritett\u00e4v\u00e4 se haluamillasi parametreilla. Voit ottaa sen k\u00e4ytt\u00f6\u00f6n, poistaa sen ja muuttaa eri tulosteita aina, kun kuponki n\u00e4kyy asiakkaalle. Vaihtoehtoisesti, jos et halua kuponkeja asiakkaiden saataville verkkokauppaasi, katsomme joitain yksinkertaisia \u200b\u200btemppuja piilottaaksemme vaihtoehdot kuponkikoodien sy\u00f6tt\u00e4miseen manuaalisesti.<\/p>\n<p>Alla olevassa koodiesimerkiss\u00e4 ryhmittelen kaiken siihen liittyv\u00e4n koodin PHP-luokkaan. T\u00e4m\u00e4 auttaa puhdistamaan koodia, mutta on erityisen hy\u00f6dyllinen, koska haluamme viitata kuponkikoodiin useita kertoja. Sen m\u00e4\u00e4ritt\u00e4minen luokkamuuttujaksi on parempi kuin sen toistaminen useissa funktioissa.<\/p>\n<h3>Luo alennuksesi kupongiksi<\/h3>\n<p>Ensimm\u00e4inen vaihe on kupongin luominen, joka on alennuksesi &quot;paikkamerkki&quot;. Helpoin on luoda sellainen WooCommerce-j\u00e4rjestelm\u00e4nvalvojassa (WooCommerce &gt; Kupongit &gt; Lis\u00e4\u00e4 kuponki).<\/p>\n<p>Jos haluat luoda kupongin ohjelmallisesti, kuponki on itse asiassa viesti, jonka avulla voit luoda <code>wp_insert_post()<\/code>\u2013 mutta sinun on huolehdittava kuponkiviestin luomisesta vain kerran. WooCommercella on lyhyt <a href=\"https:\/\/docs.woocommerce.com\/document\/create-a-coupon-programatically\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">opas kuponkien luomiseen ohjelmallisesti<\/a>.<\/p>\n<p>Anna kuponkikoodiksi ainutlaatuinen etana ja m\u00e4\u00e4rit\u00e4 v\u00e4hint\u00e4\u00e4n alennussumma (joko prosentti tai kiinte\u00e4 maksu). Mit\u00e4 tulee alla olevaan koodiesimerkkiin, olen luonut kuponkikoodin &quot; <code>example<\/code>&quot; (suosittelen kuitenkin luovamman ja sopivamman nimen k\u00e4ytt\u00e4mist\u00e4).<\/p>\n<h3>Luodaan PHP-luokka, joka sis\u00e4lt\u00e4\u00e4 kaiken koodimme<\/h3>\n<p>Siirryt\u00e4\u00e4n vihdoin koodaukseen! Voit m\u00e4\u00e4ritt\u00e4\u00e4 t\u00e4m\u00e4n luokan suoraan teemasi <code>functions.php<\/code>, laajennuskoodin tai mukana tulevan erillisen tiedoston sis\u00e4ll\u00e4.<\/p>\n<pre><code>class AWPCustomDiscount {\n    private $coupon_code = 'example';\n\u00a0\n    public function __construct() {\n\u00a0\n    }\n}\nnew AWPCustomDiscount();<\/code><\/pre>\n<p>Nime\u00e4 luokkasi haluamallasi tavalla ja korvaa luokan muuttuja <code>$coupon_code<\/code>mill\u00e4 tahansa kupongin nimell\u00e4. \u00c4l\u00e4 unohda alustaa luokkaa lopussa (<code>new AWPCustomDiscount()<\/code>).<\/p>\n<p>Jos olet ohjelmoinut oliopohjaisesti aiemmin, t\u00e4m\u00e4n pit\u00e4isi olla sinulle tuttua. Jos ei, \u00e4l\u00e4 huoli, t\u00e4m\u00e4n pit\u00e4isi olla helppo seurata. Lis\u00e4\u00e4mme t\u00e4h\u00e4n muutamia toimintoja ja viittaamme kuponkikoodiin <code>$this-&gt;coupon_code<\/code>. Aloitetaan koodilla, joka on vastuussa kupongin lis\u00e4\u00e4misest\u00e4, kun ehdot t\u00e4yttyv\u00e4t.<\/p>\n<h3>Kupongin k\u00e4ytt\u00e4minen ohjelmallisesti<\/h3>\n<p>Kokemuksesta olen oppinut, ett\u00e4 koodin kiinnitt\u00e4minen kuponkien k\u00e4ytt\u00e4mist\u00e4 ja poistamista varten toimii parhaiten ja johdonmukaisimmin k\u00e4ytt\u00e4m\u00e4ll\u00e4 seuraavia kahta koukkua; yksi ostoskoriin (<code>woocommerce_before_cart<\/code>) ja yksi kassalle (<code>woocommerce_before_checkout_form<\/code>).<\/p>\n<p>Toiminnon sis\u00e4ll\u00e4 meid\u00e4n tarvitsee vain tarkistaa haluamamme ehdot. WooCommerce tarjoaa toimintoja, joilla saamme k\u00e4siins\u00e4 ostoskorin esineen, <code>with WC()-&gt;cart<\/code>joiden avulla voimme saada kaikki tarvitsemamme tiedot ostoskorista, kuten sen tuotteet ja kokonaissummat. Esimerkkin\u00e4 alla oleva koodi antaa alennuksen, jos ostoskorin kokonaissumma (ilman alennuksia) ylitt\u00e4\u00e4 tietyn summan.<\/p>\n<p>Meid\u00e4n tulee my\u00f6s varmistaa, ett\u00e4 jos ehdot eiv\u00e4t t\u00e4yty, meid\u00e4n tulee poistaa alennus, jos se on aiemmin lis\u00e4tty. Kuvittele esimerkiss\u00e4mme, ett\u00e4 asiakas ylitti enimm\u00e4ism\u00e4\u00e4r\u00e4n, mutta meni sitten ostoskoriin, poisti joitain tuotteita ja palasi siten takaisin vaaditun summan alapuolelle. Koska kuponkeja ei k\u00e4ytet\u00e4 automaattisesti, kaikki k\u00e4ytetyt kupongit on my\u00f6s poistettava ohjelmallisesti.<\/p>\n<h4>K\u00e4ytt\u00e4m\u00e4ll\u00e4<code>apply_coupon<\/code><\/h4>\n<p>Kupongit lis\u00e4t\u00e4\u00e4n ostoskoriobjektiin <code>apply_coupon()<\/code>antamalla kuponkikoodi parametrina ja ne poistetaan ostoskoriobjektista <code>remove_coupon()<\/code>k\u00e4ytt\u00e4m\u00e4ll\u00e4 kuponkikoodia parametrina. Tarpeeksi yksinkertainen. Voimme my\u00f6s k\u00e4ytt\u00e4\u00e4 <code>get_applied_coupons()<\/code>ostoskoriobjektissa niin osuvasti nimetty\u00e4 toimintoa tarkistaaksemme, onko kuponkimme jo k\u00e4ytetty.<\/p>\n<pre><code>    ...\n    public function __construct() {\n        add_action('woocommerce_before_cart', [$this, 'addDiscount']);\n        add_action('woocommerce_before_checkout_form', [$this, 'addDiscount']);\n    }\n\u00a0\n    function addDiscount() {\n        if (is_admin() &amp;&amp; !defined('DOING_AJAX')) {\n            return;\n        }\n        if (WC()-&gt;cart-&gt;get_subtotal() &gt; 500) {\n            \/\/ add discount, if not added already\n            if (!in_array($this-&gt;coupon_code, WC()-&gt;cart-&gt;get_applied_coupons())) {\n                WC()-&gt;cart-&gt;apply_coupon($this-&gt;coupon_code);\n            }\n        } else {\n            \/\/ remove discount if it was previously added\n            WC()-&gt;cart-&gt;remove_coupon($this-&gt;coupon_code);\n        }\n    }\n    ...<\/code><\/pre>\n<p>Jos et ole perehtynyt oliopohjaisen PHP:n k\u00e4ytt\u00e4miseen WordPressiss\u00e4; T\u00e4ss\u00e4 on lyhyt yhteenveto siit\u00e4, miten yll\u00e4 oleva toimii: <code>__construct()<\/code>Funktio suoritetaan aina, kun luokka alustetaan, mink\u00e4 teemme heti luokan j\u00e4lkeen. Sis\u00e4lle <code>__construct()<\/code>lis\u00e4\u00e4t yleens\u00e4 kaikki koukut kuten normaalisti esimerkiksi sis\u00e4ll\u00e4 <code>functions.php<\/code>. Jotta WordPress l\u00f6yt\u00e4\u00e4 funktiomme luokassamme, meid\u00e4n on k\u00e4skett\u00e4v\u00e4 koukku viittaamaan funktioon, joka on m\u00e4\u00e4ritelty taulukossa, joka koostuu <code>$this<\/code>(luokkaobjektista) ja funktion nimest\u00e4.<\/p>\n<p>Ohjelmoimme toiminnon sis\u00e4ll\u00e4 <code>addDiscount()<\/code>olosuhteissamme. Yll\u00e4 olevassa esimerkiss\u00e4 haen k\u00e4rryn kokonaisk\u00e4yt\u00f6n <code>WC()-&gt;cart-&gt;get_subtotal()<\/code>ja vertaan sit\u00e4 olosuhteisiini \u2013 yli 500.<\/p>\n<p>Huomaa: Jos sinun on noudettava ja verrattava ostoskorin loppusummaa, muista, ett\u00e4 suurin osa kokonaissummasta sis\u00e4lt\u00e4\u00e4 kuponkeja. Esimerkiksi tutumpi <code>WC()-&gt;cart-&gt;get_cart_contents_total()<\/code>palauttaa loppusumman ennen toimitusta, mutta mukaan lukien alennukset; T\u00e4m\u00e4 tarkoittaa, ett\u00e4 jos alennustasi on k\u00e4ytetty aiemmin, t\u00e4t\u00e4 summaa ei voi verrata.<\/p>\n<p>Voit soittaa <code>apply_coupon()<\/code>tarkistamatta, onko kuponki jo k\u00e4ytetty (<code>if<\/code>tarkistus rivill\u00e4 #14), koska toiminto <code>apply_coupon()<\/code>itse varmistaa, ettei se lis\u00e4\u00e4 sit\u00e4 uudelleen, jos se on k\u00e4ytetty aiemmin. T\u00e4m\u00e4 <code>if<\/code>-tarkistus kuitenkin est\u00e4\u00e4 asiakasta saamasta virheilmoituksen &quot;Kuponki on jo k\u00e4ytetty&quot; joka kerta kun ostoskoria p\u00e4ivitet\u00e4\u00e4n.<\/p>\n<p>N\u00e4in alennuksesi n\u00e4kyy ostoskorin loppusummassa ja kassalla:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152866-61e4fcd750a7d.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152866-61e4fcd750a7d.png\" alt=\"Mukautetun alennuksen lis\u00e4\u00e4minen ohjelmallisesti WooCommerce Checkoutiin\" ><\/a><\/p>\n<h4>Alennusehdot<\/h4>\n<p>Kupongin ehdot riippuvat t\u00e4ysin sinusta ja tarpeistasi. Olen asettanut <a href=\"https:\/\/awhitepixel.com\/blog\/guide-on-how-to-add-custom-fees-to-woocommerce-checkout\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">aiemmassa postauksessa muutamia esimerkkiehtoja mukautetun maksun lis\u00e4\u00e4miselle<\/a> \u2013 esimerkiksi toimituspaikan tai ostoskorissa olevien tuotteiden mukaan. Voit my\u00f6s verrata t\u00e4m\u00e4n p\u00e4iv\u00e4n p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4\u00e4, jos halusit antaa erikoisalennuksen joulu- tai halloween-alennukseen tai antaa ehtoihin perustuvan alennuksen kirjautuneen asiakkaan luona.<\/p>\n<p>Jos haluat mieluummin k\u00e4ytt\u00e4\u00e4 kuponkia itse kuponkiin m\u00e4\u00e4ritt\u00e4miesi asetusten mukaan \u2013 esimerkiksi sulkea pois tai sis\u00e4llytt\u00e4\u00e4 tiettyj\u00e4 tuotetunnuksia, voit my\u00f6s tehd\u00e4 niin. Voit luoda kupongin kohteen kuponkikoodista seuraavasti:<\/p>\n<pre><code>$coupon = new WC_Coupon($this-&gt;coupon_code);<\/code><\/pre>\n<p>T\u00e4m\u00e4n kuponkiobjektin avulla sinulla on p\u00e4\u00e4sy kaikkiin toimintoihin, joilla voit noutaa kaikki kuponkiin m\u00e4\u00e4ritt\u00e4m\u00e4si asetukset. Esimerkiksi kuponkiin sis\u00e4llytett\u00e4v\u00e4t tuotetunnukset:<\/p>\n<pre><code>$required_products = $coupon-&gt;get_product_ids();<\/code><\/pre>\n<p>Katso <a href=\"https:\/\/docs.woocommerce.com\/wc-apidocs\/class-WC_Coupon.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WC_Coupon-luokan dokumentaatiosta<\/a>, kuinka saat tarvitsemasi paikan.<\/p>\n<h3>Korjaa kupongin n\u00e4kyv\u00e4 tarra<\/h3>\n<p>Kuponki pit\u00e4isi t\u00e4h\u00e4n menness\u00e4 lis\u00e4t\u00e4 ja poistaa, kun ostoskorisi t\u00e4ytt\u00e4\u00e4 tai ei t\u00e4yt\u00e4 ehtojasi <code>addDiscount()<\/code>. Kuitenkin sek\u00e4 ostoskorin ett\u00e4 kassan loppusummataulukossa alennus n\u00e4kyy muodossa &quot;Kuponki: esimerkki&quot; (tai mik\u00e4 tahansa kuponkikoodisi). Tuo ei ole hyv\u00e4! Onneksi t\u00e4m\u00e4 tarra on helppo vaihtaa suodattimen avulla <code>woocommerce_cart_totals_coupon_label<\/code>. Lis\u00e4\u00e4mme suodattimen suodattimeemme <code>__construct()<\/code>ja m\u00e4\u00e4rit\u00e4mme funktion:<\/p>\n<pre><code>    ...\n    public function __construct() {\n        add_action('woocommerce_before_cart', [$this, 'addDiscount']);\n        add_action('woocommerce_before_checkout_form', [$this, 'addDiscount']);\n        add_filter('woocommerce_cart_totals_coupon_label', [$this, 'discountLabel'], 10, 2);\n    }\n\u00a0\n    function discountLabel($label, $coupon) {\n        if ($coupon-&gt;code == $this-&gt;coupon_code) {\n            return __('Custom discount', 'txtdomain');\n        }\n        return $label;\n    }\n    ...<\/code><\/pre>\n<p>Suodattimen avulla saamme p\u00e4\u00e4syn kuponkiobjektiin toisena parametrina. Kuponkiobjektin avulla voimme tarkistaa sen ominaisuuden <code>code<\/code>, vastaako se mukautettua kuponkikoodiamme vai ei. Jos n\u00e4in on, palautamme haluamamme etiketin. S\u00e4\u00e4d\u00e4 tarratulostus haluamaasi mukaan. Muussa tapauksessa palautamme oletuskuponkitunnisteen.<\/p>\n<h3>Poista alennuksen k\u00e4ytt\u00e4j\u00e4vaihtoehto<\/h3>\n<p>Toinen asia, jonka olet ehk\u00e4 huomannut alennuksemme n\u00e4ytt\u00e4misess\u00e4 ostoskorissa ja kassalla, on se, ett\u00e4 sen summan j\u00e4lkeen on linkki &quot;[Poista]&quot;. T\u00e4m\u00e4 on WooCommercen kuponkien oletusk\u00e4ytt\u00e4ytyminen, mutta meid\u00e4n tapauksessamme se ei ole toivottavaa. Sek\u00e4 siksi, ett\u00e4 se saattaa h\u00e4mment\u00e4\u00e4 asiakkaita, ett\u00e4 koska koodimme ottaisi sen uudelleen k\u00e4ytt\u00f6\u00f6n poistamisen j\u00e4lkeen.<\/p>\n<p>WooCommerce tarjoaa suodattimen <code>woocommerce_cart_totals_coupon_html<\/code>summan ulostulolle. Onneksi WooCommerce tarjoaa vain itse summan HTML-ulostulon kolmantena parametrina t\u00e4lle suodattimelle. Voimme yksinkertaisesti palauttaa t\u00e4m\u00e4n sen sijaan, ett\u00e4 varmistaisimme, ett\u00e4 alennuksemme esitet\u00e4\u00e4n oikein valuutan ja kaiken kanssa.<\/p>\n<pre><code>    ...\n    public function __construct() {\n        add_action('woocommerce_before_cart', [$this, 'addDiscount']);\n        add_action('woocommerce_before_checkout_form', [$this, 'addDiscount']);\n        add_filter('woocommerce_cart_totals_coupon_label', [$this, 'discountLabel'], 10, 2);\n        add_filter('woocommerce_cart_totals_coupon_html', [$this, 'discountHtml'], 10, 3);\n    }\n\u00a0\n    function discountHtml($coupon_html, $coupon, $discount_amount_html) {\n        if ($coupon-&gt;code == $this-&gt;coupon_code) {\n            return $discount_amount_html;\n        }\n        return $coupon_html;\n    }\n    ...<\/code><\/pre>\n<h3>Valinnainen: Kuponkitoimintojen piilottaminen asiakkaille<\/h3>\n<p>Kupongit on aktivoitava WooCommercessa, jotta alennustoimintomme toimisi, mutta huomaa, ett\u00e4 t\u00e4m\u00e4 lis\u00e4\u00e4 asiakkaille mahdollisuuden sy\u00f6tt\u00e4\u00e4 kuponkikoodit manuaalisesti sek\u00e4 ostoskoriin ett\u00e4 kassalla. Jos et halua n\u00e4ytt\u00e4\u00e4, ett\u00e4 verkkokaupassasi on kuponkitoimintoja, etk\u00e4 varsinkaan salli asiakkaita sy\u00f6tt\u00e4m\u00e4st\u00e4 kuponkikoodeja manuaalisesti, voit my\u00f6s tehd\u00e4 niin.<\/p>\n<h4>Sen poistaminen kassalta<\/h4>\n<p>Kuponkitoiminnon poistaminen kassalta on helppoa ja sen voi tehd\u00e4 luokkamme sis\u00e4ll\u00e4. Poistamme vain koukun, joka tekee kupongin &quot;laatikon&quot;, kuten:<\/p>\n<pre><code>    ...\n    public function __construct() {\n        add_action('woocommerce_before_cart', [$this, 'addDiscount']);\n        add_action('woocommerce_before_checkout_form', [$this, 'addDiscount']);\n        add_filter('woocommerce_cart_totals_coupon_label', [$this, 'discountLabel'], 10, 2);\n        add_filter('woocommerce_cart_totals_coupon_html', [$this, 'discountHtml'], 10, 3);\n        remove_action('woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10);\n    }\n    ...<\/code><\/pre>\n<h4>Sen poistaminen k\u00e4rryst\u00e4<\/h4>\n<p>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 <code>pluginswoocommercetemplatescartcart.php<\/code>.<code>your-themewoocommercecartcart.php<\/code><\/p>\n<p>WooCommercen mallitiedostot muuttuvat jatkuvasti, joten tarkan rivinumeron antaminen ei auttaisi. Mutta koodi, joka tulostaa sy\u00f6tteen ja kuponkipainikkeen, l\u00f6ytyy tiedoston alaosasta. n\u00e4ytt\u00e4\u00e4 v\u00e4h\u00e4n t\u00e4lt\u00e4:<\/p>\n<pre><code>...\n&lt;?php if (wc_coupons_enabled()) { ?&gt;\n    &lt;div class=\"coupon\"&gt;\n        &lt;label for=\"coupon_code\"&gt;&lt;?php esc_html_e( 'Coupon:', 'woocommerce' ); ?&gt;&lt;\/label&gt; &lt;input type=\"text\" name=\"coupon_code\" class=\"input-text\" id=\"coupon_code\" value=\"\" placeholder=\"&lt;?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?&gt;\" \/&gt; &lt;button type=\"submit\" class=\"button\" name=\"apply_coupon\" value=\"&lt;?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?&gt;\"&gt;&lt;?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?&gt;&lt;\/button&gt;\n        &lt;?php do_action( 'woocommerce_cart_coupon' ); ?&gt;\n    &lt;\/div&gt;\n&lt;?php } ?&gt;\n...<\/code><\/pre>\n<p>Sinun on kommentoitava kuponkiin liittyv\u00e4 tulos. Suosittelen lis\u00e4\u00e4m\u00e4\u00e4n PHP-kommentin <code>\/*<\/code>heti ennen <code>if<\/code>-tarkistusta ja sulkemaan sen <code>*\/<\/code>heti sulkuhakasulkeen j\u00e4lkeen. Niin kuin:<\/p>\n<pre><code>...\n&lt;?php \/* if (wc_coupons_enabled()) { ?&gt;\n    &lt;div class=\"coupon\"&gt;\n        &lt;label for=\"coupon_code\"&gt;&lt;?php esc_html_e( 'Coupon:', 'woocommerce' ); ?&gt;&lt;\/label&gt; &lt;input type=\"text\" name=\"coupon_code\" class=\"input-text\" id=\"coupon_code\" value=\"\" placeholder=\"&lt;?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?&gt;\" \/&gt; &lt;button type=\"submit\" class=\"button\" name=\"apply_coupon\" value=\"&lt;?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?&gt;\"&gt;&lt;?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?&gt;&lt;\/button&gt;\n        &lt;?php do_action( 'woocommerce_cart_coupon' ); ?&gt;\n    &lt;\/div&gt;\n&lt;?php } *\/ ?&gt;\n...<\/code><\/pre>\n<p>T\u00e4ss\u00e4 vaiheessa verkkokauppasi kuponkitoimintojen tulisi olla k\u00e4yt\u00e4nn\u00f6ss\u00e4 piilossa asiakkailta! Mutta mukautetun alennuksen pit\u00e4isi toimia t\u00e4ydellisesti.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e4ss\u00e4 opetusohjelmassa tarkastellaan, kuinka alennusta lis\u00e4t\u00e4\u00e4n ohjelmallisesti WooCommercessa. K\u00e4yt\u00e4mme kuponkeja, mutta teemme siit\u00e4 automaattisen ja piilotamme, ett\u00e4 se on kuponki.<\/p>\n","protected":false},"author":1,"featured_media":152867,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[895,895,813,917,917,1110,843,813,843,854,854,864,864],"tags":[1166],"class_list":{"0":"post-233579","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-koodi","9":"category-laajennuksia","10":"category-muut","12":"category-n-a","13":"category-opetusohjelmia","16":"category-woocommerce-5","18":"category-wordpress-5","20":"tag-affiai-fi"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=233579"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233579\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/152867"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=233579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=233579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=233579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}