{"id":233595,"date":"2023-02-18T17:15:00","date_gmt":"2023-02-18T14:15:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233595"},"modified":"2022-11-11T00:32:56","modified_gmt":"2022-11-10T21:32:56","slug":"juhend-kuidas-lisada-woocommerce-checkoutile-koodi-jaergi-kohandatud-tasusid","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/juhend-kuidas-lisada-woocommerce-checkoutile-koodi-jaergi-kohandatud-tasusid\/","title":{"rendered":"Juhend, kuidas lisada WooCommerce Checkoutile koodi j\u00e4rgi kohandatud tasusid"},"content":{"rendered":"\n<p>M\u00f5nel juhul peate v\u00f5ib-olla lisama ostukorvi kogusummale tasu. M\u00f5nikord ainult siis, kui teatud tingimus on t\u00e4idetud, n\u00e4iteks s\u00f5ltuvalt ostukorvi kogusummast v\u00f5i saatmiskohast. WooCommerce&#8217;iga on tasu lisamine \u00fcsna lihtne \u2013 palju lihtsam kui tegelikult allahindluse lisamine. Selles postituses \u00f5pime, kuidas lisada WooCommerce&#8217;ile kohandatud tasu.<\/p>\n<p>WooCommerce&#8217;il on ostukorvi objektil sisseehitatud funktsioon tasude lisamiseks. K\u00f5ik, mida vajate, on haakuda \u00f5ige toiminguga ja kaasasoleva ostukorvi objektiga kutsuda funktsioon tasu lisamiseks. WooCommerce kuvab tasud automaatselt ostukorvis ja kassa kogusumma. Teie otsustate tasu sildi ja suuruse.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152845-61e4fc291b3a1.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-152845-61e4fc291b3a1.png\" alt=\"Juhend, kuidas lisada WooCommerce Checkoutile koodi j\u00e4rgi kohandatud tasusid\" ><\/a><\/p>\n<p>Oluline on t\u00e4hele panna, et tasu suurus <strong>ei tohi olla negatiivne<\/strong> \u2013 seega kliendile allahindlust. See &quot;h\u00e4kkimine&quot; t\u00f6\u00f6tas varem vanemates WooCommerce&#8217;i versioonides, kuid enam mitte.<\/p>\n<p>L\u00e4heme koodi \u00fcksikasjadesse! Ainus konks, mille p\u00e4rast pead muretsema, on <code>woocommerce_cart_calculate_fees<\/code>. Selle konksu sees saate k\u00e4ruobjekti k\u00e4tte helistades <code>WC()-&gt;cart<\/code>. Selle objektiga saate helistada, <code>add_fee()<\/code>mis aktsepteerib nelja parameetrit (t\u00f5en\u00e4oliselt vajate k\u00f5igepealt ainult kahte); <code>add_fee($fee_name, $amount_in_float, $taxable_boolean, $tax_class_string)<\/code>. Esimesed kaks on iseenesestm\u00f5istetavad. Kolmas parameeter on t\u00f5ev\u00e4\u00e4rtus, mis otsustab, kas tasu on maksustatav v\u00f5i mitte. Ja neljas on tasu maksuklassi andmiseks (kui kolmas parameeter on t\u00f5ene). Kuid standardse maksuklassi puhul v\u00f5ib selle t\u00fchjaks j\u00e4tta.<\/p>\n<h2>Fikseeritud tasu lisamine<\/h2>\n<p>Kohandatud tasu lisamine toimub selle k\u00f5ige lihtsamal kujul, n\u00e4iteks j\u00e4rgmiselt:<\/p>\n<pre><code>add_action('woocommerce_cart_calculate_fees', function() {\n    if (is_admin() &amp;&amp; !defined('DOING_AJAX')) {\n        return;\n    }\n    WC()-&gt;cart-&gt;add_fee(__('A small fee', 'txtdomain'), 5);\n});<\/code><\/pre>\n<p>Esimene samm on tasu lisamise takistamine, kui oleme administraatoris v\u00f5i kui Ajax on pooleli. J\u00e4rgmisena kutsume <code>add_fee()<\/code>vankriobjekti juurde. See lisab tasu nimetusega \u201eV\u00e4ike tasu&quot;, mille v\u00e4\u00e4rtus on 5. V\u00e4\u00e4rtus on mis tahes valuutas, mis teie poes on. Kui poe valuutaks on m\u00e4\u00e4ratud dollarid, muutub see 5 dollariks. Kohandage nimi ja summa vastavalt oma vajadustele.<\/p>\n<h2>Tasu lisamine protsendina ostukorvi kogusummast<\/h2>\n<p>Kui soovite, et tasu suurus oleks protsent ostukorvi kogusummast, peate selle lihtsalt teisiti arvutama. Pidage meeles, et meil on alati juurdep\u00e4\u00e4s ostukorvi objektile helistades <code>WC()-&gt;cart<\/code>ja sealt saame kogusummad k\u00e4tte.<\/p>\n<pre><code>add_action('woocommerce_cart_calculate_fees', function() {\n    if (is_admin() &amp;&amp; !defined('DOING_AJAX')) {\n        return;\n    }\n    $percentage = 0.05;  \/\/ Percentage (5%) in float\n    $percentage_fee = (WC()-&gt;cart-&gt;get_cart_contents_total() + WC()-&gt;cart-&gt;get_shipping_total()) * $percentage;\n\u00a0\n    WC()-&gt;cart-&gt;add_fee(__('A small fee', 'txtdomain'), $percentage_fee);\n});<\/code><\/pre>\n<p>\u00dclaltoodud kood lisab tasu, mis moodustab 5% ostukorvi kogusummast, mis on ostukorvi kaupade kogusumma (<code>get_cart_contents_total()<\/code>) pluss ostukorvi saatmiskulu (<code>get_shipping_total()<\/code>). Reguleerige m\u00e4\u00e4ra ja seda, millised kogusummad lisada v\u00f5i v\u00e4lja j\u00e4tta, mida vajate.<\/p>\n<p>Nii et see on p\u00e4ris tore, kuid m\u00f5nel juhul soovime tasu lisamise aega kohandada. V\u00f5ib-olla soovite lisada tasu ainult teatud saatmisviisi, makseviisi v\u00f5i ostukorvi kogusumma alusel. Protsess on sama, lisame tasu ainult siis, kui meie tingimused on t\u00e4idetud.<\/p>\n<h2>Lisandub tasu olenevalt ostukorvi kogusummast<\/h2>\n<p>Oletagem, et soovite lisada tasu ainult siis, kui ostukorvi kogusumma oli alla teatud summa. Oletame, et soovite lisada tasu v\u00e4ikeste summade k\u00e4itlemise eest. Saate seda teha nii:<\/p>\n<pre><code>add_action('woocommerce_cart_calculate_fees', function() {\n    if (is_admin() &amp;&amp; !defined('DOING_AJAX')) {\n        return;\n    }\n\u00a0\n    $cart_total = WC()-&gt;cart-&gt;get_cart_contents_total();  \/\/ This is excluding shipping\n    if ($cart_total &lt; 500) {\n        WC()-&gt;cart-&gt;add_fee(__('Fee for small transactions', 'txtdomain'), 50);\n    }\n});<\/code><\/pre>\n<p>Kasutage <code>WC()-&gt;cart-&gt;get_cart_contents_total()<\/code>ostukorvi koguarvu ujunumbri saamiseks, v\u00e4lja arvatud saatmine. (Kui soovite kaasata ka saatmiskulud, vaadake \u00fclalt, lisades protsenditasu, kuidas saada tarnesummasid). Seej\u00e4rel tehke oma v\u00f5rdlused.<\/p>\n<p>Samuti v\u00f5ite selle \u00fcmber p\u00f6\u00f6rata ja otsustada tasu lisada, kui k\u00e4ru \u00fcletab teatud piiri.<\/p>\n<h2>Lisandub tasu olenevalt saatmiskohast<\/h2>\n<p>Saate lisada tasu ka s\u00f5ltuvalt saatmiskohast, n\u00e4iteks riigiti. Sarnaselt ostukorvi objekti hankimisele saame kasutada <code>WC()-&gt;customer<\/code>kliendiobjekti jaoks. Pidage meeles, et kui klient pole sisse logitud ega kassasse j\u00f5udnud ning oma aadressi sisestanud, on kliendiobjekti v\u00e4\u00e4rtused t\u00fchjad v\u00f5i teie kaupluses m\u00e4\u00e4ratud vaikev\u00e4\u00e4rtused.<\/p>\n<p>Peate teadma riigikoodi \u2013 siin on <a href=\"http:\/\/creatingawebstore.com\/woocommerce-country-codes-and-state-codes-list.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kena riigikoodi viide<\/a>. Siin on n\u00e4ide tasu lisamisest, kui klient on Norrast.<\/p>\n<pre><code>add_action('woocommerce_cart_calculate_fees', function() {\n    if (is_admin() &amp;&amp; !defined('DOING_AJAX')) {\n        return;\n    }\n\u00a0\n    $shipping_country = WC()-&gt;customer-&gt;get_shipping_country(); \n    if ($shipping_country == 'NO') {\n        WC()-&gt;cart-&gt;add_fee(__('Fee for shipping to Norway', 'txtdomain'), 50);\n    }\n});<\/code><\/pre>\n<h2>Lisan tasu olenevalt valitud saatmisviisist<\/h2>\n<p>Tarneviisi hankimine on veidi keerulisem, kuna see s\u00f5ltub kasutaja seansist ega ole &quot;kena arusaadavas vormingus&quot;. Praeguse valitud tarneviisiga saate tutvuda <code>WC()-&gt;session-&gt;get('chosen_shipping_methods')<\/code>. Pange t\u00e4hele, et see \u00fctleb &quot;meetodid&quot;, mitte &quot;meetod&quot;, seega tagastab see massiivi. Tavaliselt sisaldab massiiv \u00fchte elementi, kus iga element koosneb tarne ID stringidest, koolonist ja sellele j\u00e4rgnevast ID-st. Soovitan kasutada PHP stringimeetodeid, et kontrollida, kas string sisaldab n\u00e4iteks ID-d <code>strpos()<\/code>ja mitte, kas see on v\u00f5rdne.<\/p>\n<pre><code>add_action('woocommerce_cart_calculate_fees', function() {\n    if (is_admin() &amp;&amp; !defined('DOING_AJAX')) {\n        return;\n    }\n\u00a0\n    $chosen_shipping_method = WC()-&gt;session-&gt;get('chosen_shipping_methods');\n\u00a0\n    if (strpos($chosen_shipping_method[0], 'flat_rate') !== false) {\n        WC()-&gt;cart-&gt;add_fee(__('Fee for flat rate shipping', 'txtdomain'), 50);\n    }\n});<\/code><\/pre>\n<h2>Lisan tasu olenevalt valitud makseviisist<\/h2>\n<p>Kui soovite lisada tasu olenevalt valitud maksel\u00fc\u00fcsist, saate praeguse valitud maksel\u00fc\u00fcsiga <code>WC()-&gt;session-&gt;get('chosen_payment_method')<\/code>tutvuda ja v\u00f5rrelda selle nimega (nt Paypali puhul tagastaks see <code>'paypal'<\/code>). Siiski v\u00f5ite m\u00e4rgata, et kui klient vahetab kassas maksel\u00fc\u00fcside vahel, tasu d\u00fcnaamiliselt ei lisata ega eemaldata. Seega peate lisama t\u00e4iendava Javascripti, et WooCommerce v\u00e4rskendaks ostukorvi, et teie tasu j\u00e4rjepidevalt toimiks.<\/p>\n<pre><code>add_action('woocommerce_cart_calculate_fees', function() {\n    if (is_admin() &amp;&amp; !defined('DOING_AJAX')) {\n        return;\n    }\n\u00a0\n    $chosen_payment_method = WC()-&gt;session-&gt;get('chosen_payment_method');\n    if ($chosen_payment_method == 'paypal') {\n        WC()-&gt;cart-&gt;add_fee(__('Paypal Fee', 'txtdomain'), 50);\n    }\n});\n\u00a0\nadd_action('woocommerce_review_order_before_payment', function() {\n    ?&gt;&lt;script type=\"text\/javascript\"&gt;\n        (function($){\n            $('form.checkout').on('change', 'input[name^=\"payment_method\"]', function() {\n                $('body').trigger('update_checkout');\n            });\n        })(jQuery);\n    &lt;\/script&gt;&lt;?php\n});<\/code><\/pre>\n<p>Javascripti lisamiseks haakime selle k\u00fclge, <code>woocommerce_review_order_before_payment<\/code>mis toimub kassas vahetult enne maksekasti ja v\u00e4ljastame tekstisisese skripti. K\u00f5ik, mida kood teeb, on WooCommerce&#8217;i konksu k\u00e4ivitamine, <code>update_checkout<\/code>kui makseviisi valikut muudetakse. See tagab, et k\u00f5ik vajalikud PHP meetodid ja konksud (kaasa arvatud tasu konks) k\u00e4ivituvad iga kord, kui ostukorvi uuendatakse.<\/p>\n<h2>Lisan tasu olenevalt sellest, millised tooted ostukorvis on<\/h2>\n<p>Mainin seda enne, aga mainin uuesti: Teil on t\u00e4ielik juurdep\u00e4\u00e4s ostukorvi objektile rakendusega <code>WC()-&gt;cart<\/code>, nii et saate otsida ostukorvi sisust konkreetse toote ID-d ja lisada tasu, kui see on ostukorvis olemas.<\/p>\n<p>Kasutamine <code>WC()-&gt;cart-&gt;get_cart_contents()<\/code>tagastab hulga k\u00f5iki ostukorvis olevaid tooteid. Saate selle lihtsa <code>foreach<\/code>ts\u00fckliga l\u00e4bi teha ja kontrollida iga toote soovitud seisundit v\u00f5i kui soovite lihtsalt ID-sid kontrollida, saate k\u00f5ik toote ID-d \u00fchele reale eraldada j\u00e4rgmiselt:<\/p>\n<pre><code>$products_in_cart = WC()-&gt;cart-&gt;get_cart_contents();\n$product_ids_in_cart = array_column(array_values($products_in_cart), 'product_id');\n\/\/ Now you can use e.g. in_array() to check for certain product IDs.<\/code><\/pre>\n<p>Allolev n\u00e4ide n\u00e4itab, kuidas saate lisada tasu s\u00f5ltuvalt sellest, kas ostukorvis on teatud ID-ga toode:<\/p>\n<pre><code>add_action('woocommerce_cart_calculate_fees', function() {\n    if (is_admin() &amp;&amp; !defined('DOING_AJAX')) {\n        return;\n    }\n\u00a0\n    $really_expensive_product_id = 12;  \/\/ product ID that triggers a fee\n\u00a0\n    $products_in_cart = WC()-&gt;cart-&gt;get_cart_contents();\n    $product_ids_in_cart = array_column(array_values($products_in_cart), 'product_id');\n    if (in_array($really_expensive_product_id, $product_ids_in_cart)) {\n        WC()-&gt;cart-&gt;add_fee(__('Fee for really expensive product', 'txtdomain'), 50);\n    }\n});<\/code><\/pre>\n<p>Sarnaseid toiminguid saate kasutada ka koguste eraldamiseks, kui peate lisama tasu, kui klient lisab midagi t\u00f5esti suure koguse.<\/p>\n<h2>Kokkuv\u00f5tteks<\/h2>\n<p>See postitus on n\u00e4idanud, kuidas lisada kohandatud tasu ja viie n\u00e4ite kaudu, kuidas teatud tingimustel tasu lisada. Need tingimused olid k\u00f5ik, millega ma olen kokku puutunud ja millele suutsin m\u00f5elda, ning need peaksid andma v\u00e4hemalt vihjeid selle kohta, kuidas saada teavet, et oma tingimusi veelgi kohandada. Andke mulle teada, kas need t\u00f6\u00f6tasid teie jaoks v\u00f5i kui olete leidnud m\u00f5ne muu seisundi, millele ma ei m\u00f5elnud!<\/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>See juhend n\u00e4itab teile, kuidas lisada kohandatud tasu WooCommerce&#8217;i ostukorvi kogusummadele ja lisada see olenevalt tarnekohast v\u00f5i makseviisist.<\/p>\n","protected":false},"author":1,"featured_media":224911,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,718,894,1110,842,812,812,842,853,853,863,863],"tags":[1165],"class_list":["post-233595","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-n-a","category-opetused","category-pistikprogrammid","category-woocommerce-4","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=233595"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233595\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/224911"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=233595"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=233595"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=233595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}