{"id":234240,"date":"2023-02-19T13:41:00","date_gmt":"2023-02-19T10:41:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234240"},"modified":"2022-11-12T01:42:26","modified_gmt":"2022-11-11T22:42:26","slug":"creer-des-onglets-de-produits-woocommerce-personnalises-avec-des-champs-personnalises-avances","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/creer-des-onglets-de-produits-woocommerce-personnalises-avec-des-champs-personnalises-avances\/","title":{"rendered":"Cr\u00e9er des onglets de produits WooCommerce personnalis\u00e9s avec des champs personnalis\u00e9s avanc\u00e9s"},"content":{"rendered":"\n<p>Lors de la visualisation d&rsquo;un produit dans <a href=\"https:\/\/woocommerce.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WooCommerce<\/a>, les informations sur le produit sont affich\u00e9es dans des onglets. Ces onglets sont fixes et g\u00e9n\u00e9r\u00e9s par WooCommerce, hors de votre contr\u00f4le. Cet article vous montrera comment ajouter du code permettant aux auteurs d&rsquo;ajouter des onglets personnalis\u00e9s avec un contenu personnalis\u00e9 aux produits.<\/p>\n<p>Avertissement: Il existe une extension WooCommerce appel\u00e9e <a href=\"https:\/\/woocommerce.com\/products\/woocommerce-tab-manager\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WooCommerce Tab Manager<\/a> qui fournit cette fonctionnalit\u00e9. Ce n&rsquo;est pas gratuit, cependant. Je ne l&rsquo;ai pas test\u00e9 moi-m\u00eame, mais pour autant que je sache, il ne prend en charge qu&rsquo;un \u00e9diteur WYSIWYG (ce que vous voyez est ce que vous obtenez) pour le contenu des onglets. Cet article est pour vous qui souhaitez affiner le contenu de l&rsquo;onglet ou qui souhaitez \u00e9crire le code vous-m\u00eame sans payer pour un autre plugin.<\/p>\n<p>Nous utiliserons le plugin <a href=\"https:\/\/www.advancedcustomfields.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Advanced Custom Fields<\/a> (ACF) pour simplifier le processus. Mais vous devriez pouvoir remplacer assez facilement la partie d&rsquo;ACF par votre propre code personnalis\u00e9 si vous ne souhaitez pas utiliser le plugin. ACF est disponible en <a href=\"https:\/\/wordpress.org\/plugins\/advanced-custom-fields\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">version gratuite<\/a> et en <a href=\"https:\/\/www.advancedcustomfields.com\/pro\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">version Pro<\/a>. Dans ACF Pro, il existe un type de champ astucieux: le r\u00e9p\u00e9teur, qui est parfait pour ce genre d&rsquo;utilisation. Si toutefois vous ne poss\u00e9dez pas ou ne souhaitez pas acheter de licence Pro, ne vous inqui\u00e9tez pas. Le didacticiel de code ci-dessous vous montrera comment ajouter des champs en utilisant \u00e0 la fois la version gratuite et en utilisant le r\u00e9p\u00e9teur dans la version Pro.<\/p>\n<p>Si vous n&rsquo;\u00eates pas d\u00e9j\u00e0 familiaris\u00e9 avec ACF, ce qu&rsquo;ACF nous aide \u00e0 faire, c&rsquo;est la configuration facile des champs post-m\u00e9ta &#8211; de toutes sortes. Vous pouvez facilement ajouter un \u00e9diteur, un s\u00e9lecteur de fichiers, un s\u00e9lecteur de date ou de couleur, un s\u00e9lecteur de publication ou de cat\u00e9gorie avec prise en charge des choix multiples et de la r\u00e9organisation, etc. Nous pouvons obtenir la m\u00eame chose sans ACF, mais nous aurions alors besoin de coder nous-m\u00eames l&rsquo;affichage et la sauvegarde du contenu des m\u00e9taboxes.<\/p>\n<h2>Ce que nous ferons<\/h2>\n<p>Pour le dire simplement, nous voulons autoriser l&rsquo;ajout d&rsquo;onglets personnalis\u00e9s \u00e0 la vue du produit. Chaque onglet prend en charge un titre qui s&rsquo;affiche en tant qu&rsquo;\u00e9tiquette d&rsquo;onglet et le contenu qui s&rsquo;affiche lorsque vous cliquez sur l&rsquo;onglet. Les onglets personnalis\u00e9s d\u00e9pendent vraiment du type de projet ou des besoins que vous avez ; peut-\u00eatre avez-vous besoin d&rsquo;onglets pour les sp\u00e9cifications techniques, d&rsquo;un onglet avec des fichiers (par exemple, des manuels d&rsquo;utilisation, etc.), d&rsquo;informations suppl\u00e9mentaires ou d&rsquo;une requ\u00eate personnalis\u00e9e qui affiche les produits associ\u00e9s.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152607-61e4e196664e9.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-152607-61e4e196664e9.png\" alt=\"Cr\u00e9er des onglets de produits WooCommerce personnalis\u00e9s avec des champs personnalis\u00e9s avanc\u00e9s\" ><\/a><\/p>\n<p>Dans ce didacticiel, nous allons faire simple en ajoutant un \u00e9diteur WYSIWYG pour le contenu des onglets. Comme mentionn\u00e9 ci-dessus, il est facile d&rsquo;impl\u00e9menter d&rsquo;autres types de champs (par exemple, des fichiers ou une requ\u00eate de publication), c&rsquo;est juste une diff\u00e9rence dans le code que vous \u00e9crivez pour afficher le contenu de l&rsquo;onglet &#8211; qui n&rsquo;est pas li\u00e9 \u00e0 ce tutoriel.<\/p>\n<p>Si vous avez ACF Pro et que vous souhaitez utiliser le r\u00e9p\u00e9teur pour ajouter facilement plusieurs onglets ; passez \u00e0 la section suivante. Si vous n&rsquo;avez que la version gratuite d&rsquo;ACF, continuez. L&rsquo;inconv\u00e9nient de ne pas avoir de champ de r\u00e9p\u00e9teur est que vous devez d\u00e9finir un nombre fixe d&rsquo;onglets. Ainsi, l&rsquo;auteur ne peut pas cr\u00e9er un nombre illimit\u00e9 d&rsquo;onglets comme il le peut avec le r\u00e9p\u00e9teur. Mais cette solution gratuite fonctionnera tr\u00e8s bien dans les boutiques en ligne o\u00f9 vous voulez juste un (nombre d&rsquo;) onglets personnalis\u00e9s sp\u00e9cifiques.<\/p>\n<h2>Tutoriel pour la version gratuite d&rsquo;ACF<\/h2>\n<h3>Ajout des champs ACF<\/h3>\n<p>Ajouter une nouvelle metabox avec des champs est vraiment facile avec ACF. Vous avez deux options ; utilisez l&rsquo;interface utilisateur d&rsquo;ACF pour tout configurer, ou ajoutez les champs par code. Habituellement, la configuration des champs dans l&rsquo;administration est la voie \u00e0 suivre. Mais si vous devez vous assurer que les champs existent dans plusieurs sites WordPress (par exemple, d\u00e9veloppement localhost, serveur de test et serveur en direct), vous pourriez b\u00e9n\u00e9ficier de l&rsquo;ajout des champs par code dans votre th\u00e8me ou plugin.<\/p>\n<p>Vous devez configurer les \u00e9l\u00e9ments suivants\u00a0:<\/p>\n<ul>\n<li>Un groupe qui s&rsquo;affiche lorsque le type de publication correspond aux produits WooCommerce<\/li>\n<li>Une entr\u00e9e de texte pour le titre de l&rsquo;onglet<\/li>\n<li>Quel que soit le ou les champs que vous souhaitez pour le contenu de l&rsquo;onglet. \u00c0 titre d&rsquo;exemple, nous ajouterons un \u00e9diteur WYSIWYG.<\/li>\n<li>(Facultatif) Titres et contenus d&rsquo;onglet suppl\u00e9mentaires pour autant d&rsquo;onglets que nous souhaitons prendre en charge.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152607-61e4e197a93a6.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-152607-61e4e197a93a6.png\" alt=\"Cr\u00e9er des onglets de produits WooCommerce personnalis\u00e9s avec des champs personnalis\u00e9s avanc\u00e9s\" ><\/a><\/p>\n<p>Veuillez prendre note de ne pas oublier les noms des champs car vous devrez vous y r\u00e9f\u00e9rer plus tard. J&rsquo;ai d\u00e9fini le titre de l&rsquo;onglet comme <code>tab_title<\/code>et le champ WYSIWYG comme <code>tab_contents<\/code>.<\/p>\n<p>Si vous pr\u00e9f\u00e9rez ajouter les champs par code, voici un exemple. Ajoutez ceci dans le fichier de votre th\u00e8me <code>functions.php<\/code>ou plugin\u00a0:<\/p>\n<pre><code>if (class_exists('acf')) {\n    add_action('acf\/init', function() {\n        $fields = [\n            [\n                'key' =&gt; 'field_tab_title',\n                'label' =&gt; __('Custom tab title', 'txtdomain'),\n                'name' =&gt; 'tab_title',\n                'type' =&gt; 'text',\n            ],\n            [\n                'key' =&gt; 'field_tab_contents',\n                'label' =&gt; __('Custom tab content', 'txtdomain'),\n                'name' =&gt; 'tab_contents',\n                'type' =&gt; 'wysiwyg',\n                'tabs' =&gt; 'all',\n                'toolbar' =&gt; 'full',\n                'media_upload' =&gt; 1,\n                'delay' =&gt; 0,\n            ],\n        ];\n\u00a0\n        acf_add_local_field_group([\n            'key' =&gt; 'group_custom_woocommerce_tabs',\n            'title' =&gt; __('Custom Tabs', 'txtdomain'),\n            'fields' =&gt; $fields,\n            'label_placement' =&gt; 'top',\n            'menu_order' =&gt; 0,\n            'style' =&gt; 'default',\n            'position' =&gt; 'normal',\n            'location' =&gt; [\n                [\n                    [\n                        'param' =&gt; 'post_type',\n                        'operator' =&gt; '==',\n                        'value' =&gt; 'product'\n                    ]\n                ]\n            ],\n        ]);\n    });\n}<\/code><\/pre>\n<p>Si vous voulez plus d&rsquo;un onglet, ajoutez simplement un autre ensemble de titre d&rsquo;onglet et de contenu d&rsquo;onglet apr\u00e8s <code>line #19<\/code>. N&rsquo;oubliez pas de rester <code>name<\/code>unique.<\/p>\n<p>Lorsque nous \u00e9ditons un produit, nous devrions voir appara\u00eetre cette m\u00e9tabox\u00a0:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152607-61e4e198aac0f.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-152607-61e4e198aac0f.png\" alt=\"Cr\u00e9er des onglets de produits WooCommerce personnalis\u00e9s avec des champs personnalis\u00e9s avanc\u00e9s\" ><\/a><\/p>\n<h3>Sortie de vos onglets personnalis\u00e9s<\/h3>\n<p>WooCommerce nous permet de filtrer <code>woocommerce_product_tabs<\/code>pour manipuler les onglets. Comme argument de ce filtre, vous obtenez un tableau pour tous les onglets. Le tableau se compose de tableaux pour chaque onglet avec des cl\u00e9s uniques. Mais le tableau de chaque onglet ne contient pas la sortie r\u00e9elle du contenu de l&rsquo;onglet. Au lieu de cela, il attend un rappel &#8211; le nom d&rsquo;une fonction que WooCommerce ex\u00e9cutera pour afficher le contenu de l&rsquo;onglet.<\/p>\n<p>Une fois \u00e0 l&rsquo;int\u00e9rieur de la fonction, vous pouvez utiliser <code>global $post<\/code>pour acc\u00e9der \u00e0 l&rsquo;objet de publication actuel, ou si vous voulez que l&rsquo;objet produit que WooCommerce g\u00e9n\u00e8re, faites simplement <code>global $product<\/code>. Nous avons besoin de l&rsquo;ID de publication pour r\u00e9cup\u00e9rer la valeur de nos champs personnalis\u00e9s avec la fonction ACF <code>[get_field](https:\/\/www.advancedcustomfields.com\/resources\/get_field\/)()<\/code>. Dans l&rsquo;exemple de code ci-dessous, nous r\u00e9cup\u00e9rons uniquement le titre de l&rsquo;onglet et v\u00e9rifions s&rsquo;il est vide ou non. Si ce n&rsquo;est pas le cas, il ajoute un nouvel onglet au tableau. Il est logique de ne pas ajouter d&rsquo;onglets o\u00f9 le titre de l&rsquo;onglet est vide.<\/p>\n<pre><code>if (class_exists('acf') &amp;&amp; class_exists('WooCommerce')) {\n    add_filter('woocommerce_product_tabs', function($tabs) {\n        global $post, $product;  \/\/ Access to the current product or post\n        $custom_tab_title = get_field('tab_title', $post-&gt;ID);\n\u00a0\n        if (!empty($custom_tab_title)) {\n            $tabs['awp-'. sanitize_title($custom_tab_title)] = [\n                'title' =&gt; $custom_tab_title,\n                'callback' =&gt; 'awp_custom_woocommerce_tabs',\n                'priority' =&gt; 10\n            ];\n        }\n        return $tabs;\n    });\n\u00a0\n    function awp_custom_woocommerce_tabs($key, $tab) {\n        global $post;\n\u00a0\n        ?&gt;&lt;h2&gt;&lt;?php echo $tab['title']; ?&gt;&lt;\/h2&gt;&lt;?php\n\u00a0\n        $custom_tab_contents = get_field('tab_contents', $post-&gt;ID);\n        echo $custom_tab_contents;\n    }\n}<\/code><\/pre>\n<p>Notez que vous pouvez utiliser &lsquo; <code>priority<\/code>&lsquo; pour contr\u00f4ler la position de l&rsquo;onglet. Par exemple, le d\u00e9finir sur 1 fera appara\u00eetre votre onglet en premier, avant tous les onglets de WooCommerce. D\u00e9finissez un nom de fonction pour l&rsquo; <code>callback<\/code>\u00e9l\u00e9ment &lsquo; &lsquo;. En ligne, <code>#17<\/code>nous d\u00e9finissons la fonction que WooCommerce ex\u00e9cutera pour afficher le contenu de l&rsquo;onglet.<\/p>\n<p>Ces fonctions de rappel d&rsquo;onglet obtiendront deux param\u00e8tres\u00a0; la cl\u00e9 et l&rsquo;\u00e9l\u00e9ment de tableau de toutes les valeurs de l&rsquo;onglet en cours. Dans notre fonction de rappel, nous affichons \u00e0 nouveau le titre de l&rsquo;onglet, en nous r\u00e9f\u00e9rant au <code>$tab<\/code>tableau fourni. WooCommerce fait \u00e9cho \u00e0 leurs titres d&rsquo;onglets dans un <code>h2<\/code>afin que nous fassions de m\u00eame. Et puis nous utilisons <code>get_field()<\/code>pour obtenir la valeur du contenu de l&rsquo;onglet et r\u00e9percutons simplement la valeur. Ajustez la ligne <code>#23<\/code>pour s&rsquo;adapter \u00e0 tous les types de champs que vous avez ajout\u00e9s (par exemple, s\u00e9lecteur d&rsquo;objet de publication, images ou autre).<\/p>\n<p>Notez que j&rsquo;ai tout envelopp\u00e9 dans un if-check qui v\u00e9rifie si WooCommerce et ACF sont activ\u00e9s ou non. C&rsquo;est une bonne pratique pour emp\u00eacher votre site de se casser.<\/p>\n<p>Et <strong>c&rsquo;est tout<\/strong>! Vous avez maintenant cr\u00e9\u00e9 avec succ\u00e8s du code pour ajouter des onglets WooCommerce personnalis\u00e9s\u00a0!<\/p>\n<p>Si vous souhaitez le faire avec le champ r\u00e9p\u00e9teur d&rsquo;ACF Pro pour prendre en charge un nombre illimit\u00e9 d&rsquo;onglets, lisez la suite.<\/p>\n<h2>Tutoriel pour ACF Pro et r\u00e9p\u00e9teur<\/h2>\n<h3>Ajout des champs ACF<\/h3>\n<p>Ajoutez votre groupe \u00e0 l&rsquo;aide de l&rsquo;interface utilisateur d&rsquo;administration d&rsquo;ACF ou en les ajoutant par code dans vos fichiers de th\u00e8me ou de plug-in. Nous devons mettre en place les \u00e9l\u00e9ments suivants\u00a0:<\/p>\n<ul>\n<li>Un groupe qui s&rsquo;affiche lorsque le type de publication est \u00e9gal au produit WooCommerce<\/li>\n<li>Un r\u00e9p\u00e9teur avec les sous-champs suivants\u00a0:\n<ul>\n<li>Une entr\u00e9e de texte pour le titre de l&rsquo;onglet<\/li>\n<li>Quel que soit le ou les champs que vous souhaitez pour le contenu de l&rsquo;onglet.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Voici comment vous le configureriez \u00e0 l&rsquo;aide de l&rsquo;administrateur ACF\u00a0:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152607-61e4e19a1ed6d.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-152607-61e4e19a1ed6d.png\" alt=\"Cr\u00e9er des onglets de produits WooCommerce personnalis\u00e9s avec des champs personnalis\u00e9s avanc\u00e9s\" ><\/a><\/p>\n<p>Ou vous pouvez ajouter le groupe par code comme ceci\u00a0:<\/p>\n<pre><code>if (class_exists('acf')) {\n    add_action('acf\/init', function() {\n        $fields = [\n            [\n                'key' =&gt; 'field_custom_tabs_repeater',\n                'label' =&gt; __('Custom tabs', 'txtdomain'),\n                'name' =&gt; 'custom_tabs_repeater',\n                'type' =&gt; 'repeater',\n                'layout' =&gt; 'row',\n                'button_label' =&gt; __('Add new tab', 'txtdomain'),\n                'sub_fields' =&gt; [\n                    [\n                        'key' =&gt; 'field_tab_title',\n                        'label' =&gt; __('Tab title', 'txtdomain'),\n                        'name' =&gt; 'tab_title',\n                        'type' =&gt; 'text',\n                    ],\n                    [\n                        'key' =&gt; 'field_tab_contents',\n                        'label' =&gt; __('Tab content', 'txtdomain'),\n                        'name' =&gt; 'tab_contents',\n                        'type' =&gt; 'wysiwyg',\n                        'tabs' =&gt; 'all',\n                        'toolbar' =&gt; 'full',\n                        'media_upload' =&gt; 1,\n                        'delay' =&gt; 0,\n                    ],\n                ],\n            ],\n        ];\n\u00a0\n        acf_add_local_field_group([\n            'key' =&gt; 'group_custom_woocommerce_tabs',\n            'title' =&gt; __('Custom Tabs', 'txtdomain'),\n            'fields' =&gt; $fields,\n            'label_placement' =&gt; 'top',\n            'menu_order' =&gt; 0,\n            'style' =&gt; 'default',\n            'position' =&gt; 'normal',\n            'location' =&gt; [\n                [\n                    [\n                        'param' =&gt; 'post_type',\n                        'operator' =&gt; '==',\n                        'value' =&gt; 'product'\n                    ]\n                ]\n            ],\n        ]);\n    });\n}<\/code><\/pre>\n<p>Dans tous les cas, vous devriez vous retrouver avec cette m\u00e9tabox lors de la modification des produits\u00a0:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152607-61e4e19e02c1d.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-152607-61e4e19e02c1d.png\" alt=\"Cr\u00e9er des onglets de produits WooCommerce personnalis\u00e9s avec des champs personnalis\u00e9s avanc\u00e9s\" ><\/a><\/p>\n<h3>Sortie de vos onglets personnalis\u00e9s<\/h3>\n<p>La sortie de vos onglets personnalis\u00e9s est tr\u00e8s similaire \u00e0 ce que nous avons fait ci-dessus pour la version gratuite. Nous filtrons <code>woocommerce_product_tabs<\/code>, mais ici nous parcourons chaque \u00e9l\u00e9ment r\u00e9p\u00e9t\u00e9 du r\u00e9p\u00e9teur. Nous avons besoin d&rsquo;un moyen d&rsquo;identifier chaque \u00e9l\u00e9ment du r\u00e9p\u00e9teur avec des cl\u00e9s, nous g\u00e9n\u00e9rons donc nous-m\u00eames une cl\u00e9 en utilisant la position de la boucle et une version slug du titre de l&rsquo;onglet. Dans la fonction de rappel, nous extrayons la position de la boucle de la cl\u00e9 et l&rsquo;utilisons pour faire r\u00e9f\u00e9rence au tableau de notre r\u00e9p\u00e9teur.<\/p>\n<pre><code>if (class_exists('acf') &amp;&amp; class_exists('WooCommerce')) {\n    add_filter('woocommerce_product_tabs', function($tabs) {\n        global $post, $product;  \/\/ Access to the current product or post\n        $custom_tabs_repeater = get_field('custom_tabs_repeater', $post-&gt;ID);\n\u00a0\n        if (!empty($custom_tabs_repeater)) {\n            $counter = 0;\n            $start_at_priority = 10;\n            foreach ($custom_tabs_repeater as $custom_tab) {\n                $tab_id = $counter. '_'. sanitize_title($custom_tab['tab_title']);\n                $tabs[$tab_id] = [\n                    'title' =&gt; $custom_tab['tab_title'],\n                    'callback' =&gt; 'awp_custom_woocommerce_tabs',\n                    'priority' =&gt; $start_at_priority++\n                ];\n                $counter++;\n            }\n        }\n        return $tabs;\n    });\n\u00a0\n    function awp_custom_woocommerce_tabs($key, $tab) {\n        global $post;\n\u00a0\n        ?&gt;&lt;h2&gt;&lt;?php echo $tab['title']; ?&gt;&lt;\/h2&gt;&lt;?php\n\u00a0\n        $custom_tabs_repeater = get_field('custom_tabs_repeater', $post-&gt;ID);\n        $tab_id = explode('_', $key);\n        $tab_id = $tab_id[0];\n\u00a0\n        echo $custom_tabs_repeater[$tab_id]['tab_contents'];\n    }\n}<\/code><\/pre>\n<p>Dans notre fonction de filtre, nous r\u00e9cup\u00e9rons la valeur du r\u00e9p\u00e9teur et v\u00e9rifions s&rsquo;il n&rsquo;est pas vide. Nous d\u00e9finissons ensuite une variable compteur, commen\u00e7ant \u00e0 0 (les tableaux commencent toujours par la position 0), que nous incr\u00e9mentons de 1 pour chaque \u00e9l\u00e9ment \u00e0 l&rsquo;int\u00e9rieur de la boucle (\u00e0 la ligne <code>#18<\/code>). Dans la boucle de chaque \u00e9l\u00e9ment de r\u00e9p\u00e9teur, nous les attribuons tous \u00e0 la m\u00eame fonction de rappel. Nous utilisons la fonction de WordPress <code>[sanitize_title](https:\/\/developer.wordpress.org\/reference\/functions\/sanitize_title\/)()<\/code>pour convertir le titre de l&rsquo;onglet en une version slug de celui-ci et l&rsquo;ajoutons \u00e0 la cl\u00e9.<\/p>\n<p>Dans notre fonction de rappel \u00e0 la ligne, <code>#31 - 32<\/code>nous effectuons quelques manipulations de cha\u00eene simples pour extraire la valeur du compteur (qui commence \u00e0 0 et incr\u00e9mente de 1 pour chaque \u00e9l\u00e9ment). Nous l&rsquo;utilisons ensuite simplement comme index pour le tableau de r\u00e9p\u00e9teurs afin de r\u00e9cup\u00e9rer le champ de contenu d&rsquo;onglet correct.<\/p>\n<p>Et <strong>c&rsquo;est tout<\/strong>! Vous avez maintenant impl\u00e9ment\u00e9 un nombre illimit\u00e9 d&rsquo;onglets personnalis\u00e9s dans WooCommerce\u00a0!<\/p>\n<p>N&rsquo;oubliez pas que vous pouvez remplacer WYSIWYG par n&rsquo;importe quel type de champ. Vous avez juste besoin de changer la fa\u00e7on dont vous affichez le champ \u00e0 la ligne <code>#23<\/code>.<\/p>\n<h2>Conclusion<\/h2>\n<p>\u00c9crire votre propre code pour ajouter des onglets WooCommerce personnalis\u00e9s est vraiment facile lorsque vous avez compris le concept de base de la fa\u00e7on dont WooCommerce le fait. Il ne n\u00e9cessite m\u00eame pas beaucoup de code. C&rsquo;est une solution parfaite pour vous qui ne voulez pas ou ne pouvez pas investir dans des licences d&rsquo;extension ou qui ont juste besoin d&rsquo;une solution simple pour votre boutique en ligne.<\/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>Un tutoriel sur la fa\u00e7on dont vous pouvez ajouter des onglets WooCommerce personnalis\u00e9s aux produits. Voyez \u00e0 quel point il est facile de le faire avec le plug-in Advanced Custom Fields et un peu de code.<\/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":[717,717,1110,811,811,841,841,852,852,862,862],"tags":[1167],"class_list":{"0":"post-234240","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-developpeur","9":"category-n-a","10":"category-plugins-2","12":"category-tutoriels","14":"category-woocommerce-3","16":"category-wordpress-3","18":"tag-affiai-fr"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234240","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=234240"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234240\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/224911"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=234240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=234240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=234240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}