{"id":234203,"date":"2023-02-12T14:24:00","date_gmt":"2023-02-12T11:24:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234203"},"modified":"2022-11-12T00:07:12","modified_gmt":"2022-11-11T21:07:12","slug":"comment-modifier-les-textes-courants-de-woocommerce-avec-du-code","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/comment-modifier-les-textes-courants-de-woocommerce-avec-du-code\/","title":{"rendered":"Comment modifier les textes courants de WooCommerce avec du code"},"content":{"rendered":"\n<p>WooCommerce regorge de filtres, de crochets et de fonctions pour vous aider \u00e0 personnaliser et \u00e0 utiliser le plugin dans votre th\u00e8me ou plugin. Voici quelques exemples de code petits mais utiles, des a-ha et des proc\u00e9dures de modifications courantes de diff\u00e9rentes sorties de texte.<\/p>\n<h2>Modification des textes du bouton &quot;Ajouter au panier&quot;<\/h2>\n<p>Il y a deux filtres\u00a0; un pour les textes \u00abajouter au panier\u00bb en boucle (<code>woocommerce_product_add_to_cart_text<\/code>), et un autre pour le bouton en produit unique (<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>Cependant, gardez \u00e0 l&rsquo;esprit que cela remplace tous les textes &quot;Ajouter au panier&quot;. M\u00eame ceux qui \u00e9taient \u00e0 l&rsquo;origine \u00abSelect options\u00bb (produits variables) ou \u00abRead more\u00bb (produits non achetables \u2013 pas de prix ou en rupture de stock). Si vous souhaitez un r\u00e9glage plus pr\u00e9cis, incluez le deuxi\u00e8me argument \u00e0 ces filtres\u00a0; l&rsquo;objet produit. Utilisez l&rsquo;objet produit pour contr\u00f4ler conditionnellement la sortie. Par exemple, par type de produit ou si le produit peut \u00eatre achet\u00e9 ou non\u00a0:<\/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>Modifier la sortie de gamme de prix sur les produits variables et group\u00e9s<\/h2>\n<p>Par d\u00e9faut, WooCommerce affichera le prix le plus bas et le prix le plus \u00e9lev\u00e9 sur les produits variables et group\u00e9s, avec un &quot;-&quot; entre les deux. Vous pouvez tr\u00e8s facilement modifier cette plage de sortie. Par exemple, assurez-vous qu&rsquo;il n&rsquo;affiche que le prix le plus bas, sous la forme \u00abDe: \u00bb. WooCommerce a un filtre pour les produits variables et un autre pour les produits group\u00e9s, alors regardons-les tous les deux tour \u00e0 tour.<\/p>\n<p>Le contr\u00f4le de la sortie HTML de la gamme de prix pour les produits variables se fait avec le filtre <code>woocommerce_variable_price_html<\/code>. L&rsquo;objet produit est fourni en deuxi\u00e8me argument.<\/p>\n<p>\u00c0 l&rsquo;int\u00e9rieur de la fonction, nous devons r\u00e9cup\u00e9rer tous les prix. WooCommerce offre une fonction pratique sur les objets produits variables, <code>get_variation_prices()<\/code>. Cela renvoie un tableau de tous les prix des variantes, tri\u00e9s par le plus bas en premier. Tout ce que nous devons faire est de supprimer le premier \u00e9l\u00e9ment du tableau des prix et de le produire correctement\u00a0:<\/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>Le filtre de sortie HTML de la fourchette de prix pour les produits group\u00e9s est tr\u00e8s similaire aux produits variables, mais avec une diff\u00e9rence\u00a0; un tableau de tous les prix des produits \u00ab\u00a0enfants\u00a0\u00bb group\u00e9s est inclus comme argument du filtre. Le filtre \u00e0 utiliser est <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>Modifier la sortie du texte de l&rsquo;\u00e9tat des stocks<\/h2>\n<p>Si vous avez activ\u00e9 l&rsquo;affichage de l&rsquo;\u00e9tat du stock dans les param\u00e8tres de WooCommerce, il devrait afficher la quantit\u00e9 pr\u00e9cise de stock restant dans la vue d&rsquo;un seul produit (par exemple &quot;42 en stock&quot;). Cependant, vous pouvez modifier la sortie pour afficher \u00e0 la place une plage plut\u00f4t que le montant pr\u00e9cis. Ou simplement &quot;En stock&quot; si vous souhaitez masquer le num\u00e9ro.<\/p>\n<p>Le filtre pour ce faire est <code>woocommerce_get_stock_html<\/code>et si vous incluez le deuxi\u00e8me argument, vous obtenez l&rsquo;objet produit. Avec l&rsquo;objet produit, vous pouvez effectuer les op\u00e9rations n\u00e9cessaires pour affiner la sortie. Gardez \u00e0 l&rsquo;esprit que la sortie filtrable est envelopp\u00e9e dans un <code>&lt;p&gt;<\/code>\u00e9l\u00e9ment, et votre sortie devrait \u00e9galement l&rsquo;\u00eatre.<\/p>\n<p>Pour afficher simplement \u00abEn stock\u00bb ou \u00abPas en stock \u00bb, cela suffira :<\/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>L&rsquo;affichage du stock dans les &quot;valeurs de plage&quot; peut \u00eatre fait comme ceci\u00a0:<\/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>Renommer les statuts des commandes<\/h2>\n<p>Parfois, un client souhaite que diff\u00e9rentes \u00e9tiquettes sur les statuts de commande aient plus de sens en fonction de ses pratiques en mati\u00e8re de boutique en ligne. Par exemple, vous voudrez peut-\u00eatre que &quot;En attente&quot; soit renomm\u00e9 en &quot;Non envoy\u00e9&quot; ou que &quot;Termin\u00e9&quot; soit renomm\u00e9 &quot;Envoy\u00e9&quot;. Juste pour mieux comprendre quelles commandes doivent \u00eatre envoy\u00e9es et lesquelles ont d\u00e9j\u00e0 \u00e9t\u00e9 envoy\u00e9es. WooCommerce propose un filtre simple, <code>wc_order_statuses<\/code>, sur tous les noms de statuts de commande disponibles.<\/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>Les touches disponibles sont <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>et <code>wc-failed<\/code>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quelques exemples de code petits mais utiles, des a-ha et des proc\u00e9dures de modifications courantes de diff\u00e9rentes sorties de texte dans 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":[893,893,1110,811,811,841,841,852,852,862,862],"tags":[1167],"class_list":["post-234203","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-n-a","category-plugins-2","category-tutoriels","category-woocommerce-3","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234203","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=234203"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234203\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/223696"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=234203"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=234203"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=234203"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}