{"id":233327,"date":"2023-02-12T14:42:00","date_gmt":"2023-02-12T11:42:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233327"},"modified":"2022-11-10T20:29:51","modified_gmt":"2022-11-10T17:29:51","slug":"hur-man-aendrar-vanliga-woocommerce-texter-med-kod","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/hur-man-aendrar-vanliga-woocommerce-texter-med-kod\/","title":{"rendered":"Hur man \u00e4ndrar vanliga WooCommerce-texter med kod"},"content":{"rendered":"\n<p>WooCommerce \u00e4r proppfull av filter, krokar och funktioner f\u00f6r att hj\u00e4lpa dig att anpassa och anv\u00e4nda plugin i ditt tema eller plugin. H\u00e4r \u00e4r n\u00e5gra sm\u00e5, men anv\u00e4ndbara, kodexempel, a-ha&#8217;s och how-tos f\u00f6r vanliga \u00e4ndringar av olika textutdata.<\/p>\n<h2>\u00c4ndra texten p\u00e5 knappen &quot;L\u00e4gg till i kundvagn&quot;.<\/h2>\n<p>Det finns tv\u00e5 filter; en f\u00f6r &quot;l\u00e4gg till i kundvagn&quot;-texter i loop (<code>woocommerce_product_add_to_cart_text<\/code>), och en annan f\u00f6r knappen i en produkt (<code>woocommerce_product_single_add_to_cart_text<\/code>):<\/p>\n<pre><code>\/\/ Single product view\nadd_filter('woocommerce_product_single_add_to_cart_text', function($text) {\n    return __('Buy this now', 'txtdomain');\n});\n\u00a0\n\/\/ Loop\nadd_filter('woocommerce_product_add_to_cart_text', function($text) {\n    return __('Buy this', 'txtdomain');\n});<\/code><\/pre>\n<p>Kom dock ih\u00e5g att detta \u00e5sidos\u00e4tter alla &quot;L\u00e4gg i kundvagn&quot;-texter. \u00c4ven de som ursprungligen var &quot;V\u00e4lj alternativ&quot; (varierande produkter) eller &quot;L\u00e4s mer&quot; (ej k\u00f6pbara produkter &#8211; inget pris eller slut i lager). Om du vill ha mer finjustering, inkludera det andra argumentet i dessa filter; produktobjektet. Anv\u00e4nd produktobjektet f\u00f6r att villkorsstyra utmatningen. Till exempel efter produkttyp eller om produkt kan k\u00f6pas eller inte:<\/p>\n<pre><code>add_filter('woocommerce_product_add_to_cart_text', function($text, $product) {\n    if ($product-&gt;is_type('variable')) {\n        return __('Take your pick', 'txtdomain');\n    }\n    if (!$product-&gt;is_purchasable()) {\n        return __('Read more', 'txtdomain');\n    }\n    return $text;\n}, 10, 2);<\/code><\/pre>\n<h2>\u00c4ndra prisintervallet p\u00e5 variabla och grupperade produkter<\/h2>\n<p>Som standard kommer WooCommerce att visa det l\u00e4gsta och det h\u00f6gsta priset p\u00e5 variabla och grupperade produkter, med ett &quot;-&quot; emellan. Du kan mycket enkelt modifiera denna intervallutg\u00e5ng. Se till exempel till att den bara visar det l\u00e4gsta priset, i form av &quot;Fr\u00e5n: &quot;. WooCommerce har ett filter f\u00f6r variabla produkter och ett annat f\u00f6r grupperade produkter, s\u00e5 l\u00e5t oss titta p\u00e5 dem b\u00e5da i tur och ordning.<\/p>\n<p>Kontroll av prisintervallet HTML-utdata f\u00f6r variabla produkter g\u00f6rs med filtret <code>woocommerce_variable_price_html<\/code>. Produktobjektet tillhandah\u00e5lls som andra argument.<\/p>\n<p>Inuti funktionen beh\u00f6ver vi h\u00e4mta alla priser. WooCommerce erbjuder en praktisk funktion p\u00e5 variabla produktobjekt, <code>get_variation_prices()<\/code>. Detta returnerar en upps\u00e4ttning av alla variantpriser, sorterade efter l\u00e4gsta f\u00f6rst. Allt vi beh\u00f6ver g\u00f6ra om det f\u00f6rsta elementet i prismatrisen hoppar av och matar ut det snyggt:<\/p>\n<pre><code>add_filter('woocommerce_variable_price_html', function($html, $product) {\n    $prices = $product-&gt;get_variation_prices(true);\n    $from_price = wc_price(current($prices['price']));\n    return sprintf(__('From: %s', 'txtdomain'), $from_price. $product-&gt;get_price_suffix());\n}, 10, 2);<\/code><\/pre>\n<p>Prisintervallet HTML-utdatafilter f\u00f6r grupperade produkter \u00e4r mycket likt variabla produkter men med en skillnad; en upps\u00e4ttning av alla grupperade produkt-&quot;barn&#8221;-priser ing\u00e5r som argument till filtret. Filtret att anv\u00e4nda \u00e4r <code>woocommerce_grouped_price_html<\/code>:<\/p>\n<pre><code>add_filter('woocommerce_grouped_price_html', function($html, $product, $child_prices) {\n    $from_price = wc_price(current($child_prices));\n    return sprintf(__('From: %s', 'txtdomain'), $from_price. $product-&gt;get_price_suffix());\n}, 10, 3);<\/code><\/pre>\n<h2>\u00c4ndra lagerstatus textutdata<\/h2>\n<p>Om du har aktiverat visning av lagerstatus i WooCommerce-inst\u00e4llningarna b\u00f6r den visa den exakta m\u00e4ngden lager som finns kvar i en produktvy (t.ex. &quot;42 i lager&quot;). Du kan dock \u00e4ndra utdata f\u00f6r att ist\u00e4llet visa ett intervall snarare \u00e4n det exakta beloppet. Eller bara &quot;I lager&quot; om du vill d\u00f6lja numret.<\/p>\n<p>Filtret f\u00f6r att g\u00f6ra detta \u00e4r <code>woocommerce_get_stock_html<\/code>och om du inkluderar det andra argumentet f\u00e5r du produktobjektet. Med produktobjektet kan du g\u00f6ra n\u00f6dv\u00e4ndiga operationer f\u00f6r att finjustera utdata. T\u00e4nk p\u00e5 att den filtrerbara utg\u00e5ngen \u00e4r inlindad i ett <code>&lt;p&gt;<\/code>element, och din utg\u00e5ng b\u00f6r ocks\u00e5.<\/p>\n<p>F\u00f6r att helt enkelt visa &quot;I lager&quot; eller &quot;Inte i lager&quot; r\u00e4cker detta:<\/p>\n<pre><code>add_filter('woocommerce_get_stock_html', function($html, $product) {\n    if ($product-&gt;is_in_stock()) {\n        return sprintf('&lt;p class=\"stock in-stock\"&gt;%s&lt;\/p&gt;', __('In stock', 'txtdomain'));\n    } else {\n        return sprintf('&lt;p class=\"stock out-of-stock\"&gt;%s&lt;\/p&gt;', __('Out of stock', 'txtdomain'));\n    }\n    return $html;\n}, 10, 2);<\/code><\/pre>\n<p>Att visa lager i &quot;intervallv\u00e4rden&quot; kan g\u00f6ras s\u00e5 h\u00e4r:<\/p>\n<pre><code>add_filter('woocommerce_get_stock_html', function($html, $product) {\n    $current_stock = $product-&gt;get_stock_quantity();\n    if ($current_stock &lt;= 0) {\n        $new_html = __('Out of stock', 'txtdomain');\n    } else if ($current_stock &gt; 500) {\n        $new_html = sprintf('500+ %s', __('in stock', 'txtdomain'));\n    } else if ($current_stock &gt; 100) {\n        $new_html = sprintf('100+ %s', __('in stock', 'txtdomain'));\n    } else if ($current_stock &gt; 20) {\n        $new_html = sprintf('20+ %s', __('in stock', 'txtdomain'));\n    } else {\n        $new_html = __('In stock', 'txtdomain');\n    }\n    return sprintf('&lt;p class=\"stock\"&gt;%s&lt;\/p&gt;', $new_html);\n}, 10, 2);<\/code><\/pre>\n<h2>Byt namn p\u00e5 orderstatus<\/h2>\n<p>Ibland vill en kund ha olika etiketter p\u00e5 best\u00e4llningsstatus f\u00f6r att vara mer meningsfulla enligt deras webbshoppraxis. Du kanske till exempel vill att &quot;P\u00e5 v\u00e4nt&quot; ska d\u00f6pas om till &quot;Ej skickat&quot; eller att &quot;Slutf\u00f6rt&quot; ska d\u00f6pas om till &quot;Skickat&quot;. Bara f\u00f6r att f\u00f6rst\u00e5 vilka best\u00e4llningar som m\u00e5ste skickas och vilka som redan har skickats. WooCommerce erbjuder ett enkelt filter, <code>wc_order_statuses<\/code>, p\u00e5 alla tillg\u00e4ngliga orderstatusnamn.<\/p>\n<pre><code>add_filter('wc_order_statuses', function($order_statuses) {\n    $order_statuses['wc-on-hold'] = __('Unsent', 'txtdomain');\n    $order_statuses['wc-completed'] = __('Sent', 'txtdomain');\n    return $order_statuses;\n});<\/code><\/pre>\n<p>Tillg\u00e4ngliga nycklar \u00e4r <code>wc-pending<\/code>, <code>wc-processing<\/code>, <code>wc-on-hold<\/code>, <code>wc-completed<\/code>, <code>wc-cancelled<\/code>, <code>wc-refunded<\/code>, och <code>wc-failed<\/code>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>N\u00e5gra sm\u00e5, men anv\u00e4ndbara, kodexempel, a-has och how-tos av vanliga \u00e4ndringar av olika textutg\u00e5ngar i WordPress WooCommerce.<\/p>\n","protected":false},"author":1,"featured_media":223696,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[901,848,901,1110,818,818,848,858,858,868,868],"tags":[1173],"class_list":["post-233327","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koda","category-handledningar","category-n-a","category-plugins-3","category-woocommerce-9","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233327","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=233327"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233327\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/223696"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=233327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=233327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=233327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}