{"id":234245,"date":"2023-02-20T20:27:00","date_gmt":"2023-02-20T17:27:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234245"},"modified":"2022-11-12T01:56:08","modified_gmt":"2022-11-11T22:56:08","slug":"comment-compiler-scss-avec-php-ajouter-des-variables-a-wordpress-customizer-pour-compiler-le-theme-css","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/comment-compiler-scss-avec-php-ajouter-des-variables-a-wordpress-customizer-pour-compiler-le-theme-css\/","title":{"rendered":"Comment compiler SCSS avec PHP\u00a0: ajouter des variables \u00e0 WordPress Customizer pour compiler le th\u00e8me CSS"},"content":{"rendered":"\n<p>Ce didacticiel vous montrera comment ajouter des param\u00e8tres de th\u00e8me, par exemple des couleurs de th\u00e8me, dans WordPress Customizer et recompiler la feuille de style de th\u00e8me avec les variables choisies. En ayant un style de th\u00e8me dans SCSS \u00e0 l&rsquo;aide d&rsquo;une biblioth\u00e8que, vous pouvez facilement permettre aux utilisateurs de th\u00e8me de personnaliser toutes les variables de la feuille de style de th\u00e8me, sans qu&rsquo;ils aient \u00e0 modifier les fichiers SCSS eux-m\u00eames.<\/p>\n<p>Tout bon th\u00e8me devrait permettre une bonne dose de personnalisation. \u00c0 tout le moins, il devrait \u00eatre possible de d\u00e9finir les couleurs du th\u00e8me principal. Au lieu d&rsquo;\u00e9crire beaucoup de CSS laids pour remplacer les couleurs du th\u00e8me partout, vous pouvez \u00e0 la place recompiler la feuille de style compl\u00e8te directement \u00e0 partir de Customizer. Ce tutoriel vous apprendra comment faire !<\/p>\n<h2>Ce que nous ferons \u2013 et ce dont nous avons besoin<\/h2>\n<p>Je suppose que votre th\u00e8me a d\u00e9j\u00e0 un peu de style dans les fichiers SCSS que vous compilez d\u00e9j\u00e0 dans le fichier <code>style.css<\/code>. Et en utilisant SCSS, vous d\u00e9finissez tr\u00e8s probablement des \u00e9l\u00e9ments r\u00e9currents tels que les couleurs, les tailles ou les points d&rsquo;arr\u00eat en tant que variables SCSS, et utilisez ces variables tout au long de votre style.<\/p>\n<p>Vous pouvez cr\u00e9er autant de param\u00e8tres de personnalisation que vous le souhaitez pour les variables de votre fichier SCSS. Les s\u00e9lecteurs de couleurs, les entr\u00e9es de nombres et de texte sont parfaits pour cela. Pendant que l&rsquo;utilisateur modifie les param\u00e8tres dans WordPress Customizer, il verra un aper\u00e7u du th\u00e8me avec les variables modifi\u00e9es. Et lorsqu&rsquo;ils cliquent sur &quot;Enregistrer&quot;, le CSS final sera compil\u00e9 dans le fichier CSS de la feuille de style principale en utilisant les valeurs choisies.<\/p>\n<p>\u00c0 titre d&rsquo;exemple pour ce didacticiel, je suppose que le fichier SCSS de la feuille de style principale du th\u00e8me fait <code>@import<\/code>un <code>variables.scss<\/code>fichier. Nous y avons d\u00e9fini trois variables que nous voulons personnaliser dans Customizer\u00a0: deux couleurs et une taille de texte dans <code>px<\/code>.<\/p>\n<pre><code>$main: #594c74 !default;\n$secondary: #555 !default;\n$text-size: 12px !default;<\/code><\/pre>\n<p>Veuillez noter qu&rsquo;afin de permettre au SCSS de red\u00e9finir les variables, <strong>elles doivent \u00eatre d\u00e9finies<\/strong> avec <code>!default<\/code>. C&rsquo;est une <a href=\"https:\/\/sass-lang.com\/documentation\/variables#default-values\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">r\u00e8gle dans SCSS<\/a>. Pour que ce tutoriel fonctionne\u00a0; toutes les variables que vous souhaitez personnaliser doivent \u00eatre d\u00e9finies par d\u00e9faut dans vos fichiers SCSS.<\/p>\n<p>C&rsquo;est \u00e0 vous de d\u00e9cider quand (ou si) vous voulez \u00e9craser le fichier CSS. Ce didacticiel suppose que lorsque l&rsquo;utilisateur clique sur &quot;Enregistrer&quot; dans Customizer, il recompilera et \u00e9crira dans le CSS du th\u00e8me. Cependant, lorsque l&rsquo;aper\u00e7u de Customizer est actif et que l&rsquo;utilisateur modifie les param\u00e8tres (avant de cliquer sur Enregistrer), nous publions simplement le CSS compil\u00e9 dans l&rsquo;en-t\u00eate de l&rsquo;aper\u00e7u du site Web. Nous ne voulons pas \u00e9craser le fichier CSS imm\u00e9diatement au cas o\u00f9 l&rsquo;utilisateur souhaiterait annuler les modifications qu&rsquo;il a apport\u00e9es.<\/p>\n<h3>\u00a0 Gardez \u00e0 l&rsquo;esprit\u2026<\/h3>\n<p>Ce didacticiel \u00e9crasera le <code>style.css<\/code>fichier du th\u00e8me \u00e0 chaque fois que les param\u00e8tres de personnalisation seront enregistr\u00e9s.<\/p>\n<p>Je suppose que vous compilez d\u00e9j\u00e0 vos fichiers SCSS avec un programme compilateur (par exemple <a href=\"http:\/\/koala-app.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Koala<\/a> ou ligne de commande). Avoir ce code dans votre th\u00e8me \u00e9crasera le fichier CSS, mais cela ne changera pas vos fichiers SCSS source. Cela signifie que chaque fois que vous apportez des modifications dans Customizer, puis que vous revenez \u00e0 vos fichiers SCSS d&rsquo;origine et recompilez, vos param\u00e8tres de personnalisation seront perdus\u00a0!<\/p>\n<p>Il existe plusieurs m\u00e9thodes pour contourner cela et cela d\u00e9pend de votre projet et de votre fa\u00e7on de travailler. Dans la plupart des cas, ce ne serait pas un probl\u00e8me. C&rsquo;est g\u00e9n\u00e9ralement juste une chose \u00e0 garder \u00e0 l&rsquo;esprit pendant que vous d\u00e9veloppez votre th\u00e8me. Si vous donnez votre th\u00e8me finalis\u00e9 \u00e0 quelqu&rsquo;un d&rsquo;autre, il ne touchera normalement pas \u00e0 vos fichiers SCSS de toute fa\u00e7on.<\/p>\n<p>Cela dit, commen\u00e7ons par examiner comment nous proc\u00e9dons\u00a0:<\/p>\n<ol>\n<li>Se familiariser avec la biblioth\u00e8que SCSSPHP et l&rsquo;inclure dans notre th\u00e8me<\/li>\n<li>Cr\u00e9er des param\u00e8tres de personnalisation pour chaque variable SCSS que nous voulons personnaliser<\/li>\n<li>Assurez-vous que le personnalisateur pr\u00e9visualise les modifications lors de vos d\u00e9placements<\/li>\n<li>Lors de l&rsquo;enregistrement des param\u00e8tres de personnalisation, nous recompilons et \u00e9crasons le fichier CSS du th\u00e8me.<\/li>\n<\/ol>\n<h2>1 La biblioth\u00e8que SCSSPHP<\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152472-61e4dfd0532a5.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-152472-61e4dfd0532a5.png\" alt=\"Comment compiler SCSS avec PHP\u00a0: ajouter des variables \u00e0 WordPress Customizer pour compiler le th\u00e8me CSS\" ><\/a><\/p>\n<p>Pour compiler les fichiers SCSS, nous utiliserons une <a href=\"https:\/\/scssphp.github.io\/scssphp\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">biblioth\u00e8que SCSSPHP de leafo<\/a> (licence MIT). Veuillez noter que ce didacticiel concerne la biblioth\u00e8que SCSS. L&rsquo;auteur de la biblioth\u00e8que poss\u00e8de une <a href=\"https:\/\/github.com\/leafo\/lessphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">biblioth\u00e8que PHP LESS<\/a> similaire si vous pr\u00e9f\u00e9rez utiliser LESS, mais rappelez-vous que le didacticiel suivant concerne la biblioth\u00e8que SCSS.<\/p>\n<p>La librairie SCSSPHP est vraiment simple \u00e0 utiliser! Voici un aper\u00e7u simplifi\u00e9 de la fa\u00e7on dont nous utiliserons la biblioth\u00e8que dans le PHP de notre th\u00e8me\u00a0:<\/p>\n<ul>\n<li>Nous incluons la biblioth\u00e8que<\/li>\n<li>Cr\u00e9er une nouvelle instance de la classe du compilateur \u00e0 partir de la biblioth\u00e8que<\/li>\n<li>Chargez le contenu du fichier SCSS source et transmettez-le \u00e0 l&rsquo;objet compilateur<\/li>\n<li>D\u00e9finissez un tableau associatif\u00a0; Noms des variables SCSS (y compris le <code>$<\/code>) en tant que cl\u00e9s et leurs valeurs. Tout \u00e9l\u00e9ment de ce tableau remplacera les variables du m\u00eame nom dans le fichier SCSS fourni.<\/li>\n<li>Nous demandons \u00e0 l&rsquo;objet compilateur de compiler et de recevoir en retour le CSS compil\u00e9 sous forme de cha\u00eene. Nous pouvons alors soit afficher ce CSS \u00e0 l&rsquo;int\u00e9rieur <code>head<\/code>, soit l&rsquo;\u00e9crire dans le <code>style.css<\/code>fichier du th\u00e8me<\/li>\n<\/ul>\n<h3>\u00a0 Quel type de variables SCSS pouvons-nous compiler\u00a0?<\/h3>\n<p>La r\u00e9ponse simple est\u00a0: n&rsquo;importe quel type de variable SCSS valide\u00a0!<\/p>\n<p>La biblioth\u00e8que SCSSPHP peut compiler n&rsquo;importe quel type de variable SCSS valide, mais gardez \u00e0 l&rsquo;esprit que vous devez vous assurer qu&rsquo;elles sont correctement format\u00e9es \u00e0 partir de Customizer. Par exemple, les couleurs doivent \u00eatre pr\u00e9fix\u00e9es par un <code>#<\/code>pour les couleurs hexad\u00e9cimales ou \u00eatre format\u00e9es en tant que d\u00e9finitions <code>rgb()<\/code>ou. <code>rgba()<\/code>Une variable de taille devrait g\u00e9n\u00e9ralement \u00eatre ajout\u00e9e avec &lsquo; <code>px<\/code>&lsquo;, &lsquo; <code>em<\/code>&lsquo;, &lsquo; <code>%<\/code>&lsquo;, etc.<\/p>\n<p>Si vous envisagez de cr\u00e9er un syst\u00e8me avanc\u00e9 pour compiler des variables SCSS via le th\u00e8me Customizer, assurez-vous d&rsquo;avoir un bon syst\u00e8me en place pour formater correctement chaque type de variable !<\/p>\n<p>\u00c9liminons le premier pas; t\u00e9l\u00e9charger et inclure la biblioth\u00e8que dans notre th\u00e8me\u00a0:<\/p>\n<h3>T\u00e9l\u00e9charger et inclure la biblioth\u00e8que SCSSPHP dans votre th\u00e8me<\/h3>\n<p>La premi\u00e8re \u00e9tape consiste \u00e0 t\u00e9l\u00e9charger la <a href=\"https:\/\/scssphp.github.io\/scssphp\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">biblioth\u00e8que SCSSPHP<\/a>. Dans la page li\u00e9e, cliquez sur le bouton &quot;T\u00e9l\u00e9charger&quot; tout en haut. Si vous souhaitez plut\u00f4t utiliser Composer, le site fournit un guide \u00e0 ce sujet.<\/p>\n<p>Extrayez le zip dans un sous-dossier quelque part dans votre th\u00e8me. Par exemple, je le place dans le <code>theme\/inc\/scssphp\/<\/code>dossier.<\/p>\n<p>Ouvrez le fichier PHP o\u00f9 vous souhaitez ajouter votre code pour la compilation. Il peut \u00eatre directement dans votre th\u00e8me <code>functions.php<\/code>ou dans un fichier PHP inclus par <code>functions.php<\/code>. Par souci de simplicit\u00e9, j&rsquo;\u00e9cris tout \u00e0 l&rsquo;int\u00e9rieur <code>functions.php<\/code>.<\/p>\n<p>Avant de pouvoir utiliser la biblioth\u00e8que, nous devons l&rsquo;inclure ; ainsi:<\/p>\n<pre><code>require_once(get_stylesheet_directory(). '\/inc\/scssphp\/scss.inc.php');<\/code><\/pre>\n<p>Ajustez le chemin d&rsquo;acc\u00e8s \u00e0 vos fichiers en cons\u00e9quence. Nous devons inclure le <code>scss.inc.php<\/code>fichier trouv\u00e9 dans le dossier racine de la biblioth\u00e8que. Maintenant, apr\u00e8s cette ligne, nous pouvons utiliser les classes de la biblioth\u00e8que\u00a0!<\/p>\n<h2>2 Cr\u00e9ation des param\u00e8tres de personnalisation pour les variables SCSS<\/h2>\n<p>Cr\u00e9ons les param\u00e8tres de WordPress Customizer pour nos variables. Pour les besoins du didacticiel, nous ajouterons des param\u00e8tres pour les variables SCSS mentionn\u00e9es ci-dessus\u00a0: deux s\u00e9lecteurs de couleurs et une entr\u00e9e num\u00e9rique.<\/p>\n<p>Je n&rsquo;entrerai pas dans les d\u00e9tails pour expliquer comment ajouter des param\u00e8tres de personnalisation &#8211; il existe de nombreux didacticiels pour cela. Dans l&rsquo;exemple de code ci-dessous, je cr\u00e9e une nouvelle section et y place les trois param\u00e8tres\u00a0:<\/p>\n<pre><code>add_action('customize_register', function($wp_customize) {\n    $wp_customize-&gt;add_section('theme-variables', [\n        'title' =&gt; __('Theme Variables', 'txtdomain'),\n        'priority' =&gt; 25\n    ]);\n\u00a0\n    $wp_customize-&gt;add_setting('theme-main', ['default' =&gt; '#594c74']);\n    $wp_customize-&gt;add_control(new WP_Customize_Color_Control($wp_customize, 'theme-main', [\n        'section' =&gt; 'theme-variables',\n        'label' =&gt; __('Main theme color', 'txtdomain'),\n        'priority' =&gt; 10\n    ]));\n\u00a0\n    $wp_customize-&gt;add_setting('theme-secondary', ['default' =&gt; '#555']);\n    $wp_customize-&gt;add_control(new WP_Customize_Color_Control($wp_customize, 'theme-secondary', [\n        'section' =&gt; 'theme-variables',\n        'label' =&gt; __('Secondary theme color', 'txtdomain'),\n        'priority' =&gt; 20\n    ]));\n\u00a0\n    $wp_customize-&gt;add_setting('theme-text-size', ['default' =&gt; '12']);\n    $wp_customize-&gt;add_control('theme-text-size', [\n        'section' =&gt; 'theme-variables',\n        'label' =&gt; __('Text size', 'txtdomain'),\n        'type' =&gt; 'number',\n        'priority' =&gt; 30,\n        'input_attrs' =&gt; ['min' =&gt; 8, 'max' =&gt; 20, 'step' =&gt; 1]\n    ]);\n});<\/code><\/pre>\n<p>Ce code s&rsquo;accroche <code>customize_register<\/code>et ajoute une section appel\u00e9e &quot;Variables de th\u00e8me&quot;. Il proc\u00e8de ensuite \u00e0 l&rsquo;ajout d&rsquo;un s\u00e9lecteur de couleurs &lsquo; <code>theme-main<\/code>&lsquo;, d&rsquo;un autre s\u00e9lecteur de couleurs &lsquo; <code>theme-secondary<\/code>&lsquo; et d&rsquo;une entr\u00e9e num\u00e9rique &lsquo; <code>theme-text-size<\/code>&lsquo;. Ce sont toutes les fonctionnalit\u00e9s WordPress par d\u00e9faut. J&rsquo;ajoute \u00e9galement d\u00e9finir la valeur par d\u00e9faut de chaque param\u00e8tre sur les m\u00eames valeurs que celles d\u00e9finies dans le <code>variables.scss<\/code>fichier. C&rsquo;est juste pour s&rsquo;assurer que les param\u00e8tres de personnalisation d\u00e9marrent avec les bonnes couleurs.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152472-61e4dfd112a70.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-152472-61e4dfd112a70.png\" alt=\"Comment compiler SCSS avec PHP\u00a0: ajouter des variables \u00e0 WordPress Customizer pour compiler le th\u00e8me CSS\" ><\/a><\/p>\n<p>\u00c7a a l&rsquo;air super! Mais pour le moment, rien ne se passe lorsque vous ajustez ces variables. Continuons avec l&rsquo;\u00e9tape 3; aper\u00e7u de la gestion dans Customizer.<\/p>\n<h2>3 Compilez le CSS lors de vos d\u00e9placements dans l&rsquo;aper\u00e7u de Customizer<\/h2>\n<p>Cette \u00e9tape g\u00e8re la mise \u00e0 jour de l&rsquo;aper\u00e7u du Customizer pendant que l&rsquo;utilisateur modifie les param\u00e8tres et n&rsquo;\u00e9crit dans aucun de nos fichiers. Au lieu de cela, nous afficherons le CSS compil\u00e9 dans <code>&lt;head&gt;<\/code>l&rsquo;aper\u00e7u \u00e0 l&rsquo;int\u00e9rieur d&rsquo;une <code>&lt;style&gt;<\/code>balise. De cette fa\u00e7on, nous nous assurons que le CSS en ligne remplace tous les styles du fichier CSS d&rsquo;origine.<\/p>\n<p>Afin de v\u00e9rifier si nous utilisons actuellement ou non l&rsquo;aper\u00e7u de Customizer, nous utilisons la fonction <code>[is_customize_preview](https:\/\/developer.wordpress.org\/reference\/functions\/is_customize_preview\/)()<\/code>. Lorsque cela revient <code>true<\/code>, nous cr\u00e9ons une fonction accroch\u00e9e \u00e0 <code>wp_head<\/code>. \u00c0 l&rsquo;int\u00e9rieur de la fonction, nous initions et configurons la biblioth\u00e8que SCSSPHP, r\u00e9cup\u00e9rons les valeurs de r\u00e9glage actuelles, compilons le CSS et le sortons dans une <code>&lt;style&gt;<\/code>balise.<\/p>\n<pre><code>require_once(get_stylesheet_directory(). '\/inc\/scssphp\/scss.inc.php');\n\u00a0\nif (is_customize_preview()) {\n    add_action('wp_head', function() {\n        $compiler = new ScssPhpScssPhpCompiler();\n\u00a0\n        $source_scss = get_stylesheet_directory(). '\/assets\/scss\/style.scss';\n        $scssContents = file_get_contents($source_scss);\n        $import_path = get_stylesheet_directory(). '\/assets\/scss';\n        $compiler-&gt;addImportPath($import_path);\n\u00a0\n        $variables = [\n            '$main' =&gt; get_theme_mod('theme-main', '#594c74'),\n            '$secondary' =&gt; get_theme_mod('theme-secondary', '#555'),\n            '$text-size' =&gt; get_theme_mod('theme-text-size', '12'). 'px',\n        ];\n        $compiler-&gt;setVariables($variables);\n\u00a0\n        $css = $compiler-&gt;compile($scssContents);\n        if (!empty($css) &amp;&amp; is_string($css)) {\n            echo '&lt;style type=\"text\/css\"&gt;'. $css. '&lt;\/style&gt;';\n        }\n    });\n}<\/code><\/pre>\n<p>\u00c0 la ligne, <code>#7<\/code>nous d\u00e9finissons le chemin d&rsquo;acc\u00e8s au fichier SCSS source et chargeons son contenu dans une variable \u00e0 <code>#8<\/code>. Et \u00e0 la ligne <code>#9<\/code>et <code>#10<\/code>nous configurons le chemin d&rsquo;importation de la biblioth\u00e8que pour nous assurer que tous les <code>@import<\/code>s fonctionnent correctement dans nos fichiers SCSS. Vous pouvez en savoir plus \u00e0 ce sujet sur le <a href=\"https:\/\/scssphp.github.io\/scssphp\/docs\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">site de documentation de la biblioth\u00e8que<\/a>, sous la rubrique &quot;Import Paths&quot;. Fondamentalement, la biblioth\u00e8que SCSSPHP doit conna\u00eetre le chemin relatif de votre dossier SCSS afin que tous <code>@import<\/code>les chemins soient corrects.<\/p>\n<p>\u00c0 la ligne, <code>#12-16<\/code>nous cr\u00e9ons le tableau pour le compilateur\u00a0; un tableau associatif avec les noms de variables comme cl\u00e9s. Pour les valeurs que nous utilisons <code>[get_theme_mod](https:\/\/developer.wordpress.org\/reference\/functions\/get_theme_mod\/)()<\/code>pour obtenir les valeurs de Customizer. La fonction <code>get_theme_mod()<\/code>permet de d\u00e9finir un d\u00e9faut comme deuxi\u00e8me param\u00e8tre si la valeur n&rsquo;a pas \u00e9t\u00e9 enregistr\u00e9e. Cela nous \u00e9vite de planter le compilateur avec des valeurs telles que <code>null<\/code>. Nous fournissons donc la m\u00eame valeur par d\u00e9faut que dans notre fichier de variables SCSS et lorsque nous avons enregistr\u00e9 les param\u00e8tres du Customizer.<\/p>\n<p>Notez \u00e9galement que le code \u00e0 la ligne <code>#15<\/code>ajoute un &lsquo; <code>px<\/code>&lsquo;, garantissant que la valeur r\u00e9elle de la variable est valide. Sinon, il compilerait en tant que &quot; <code>$text-size: 12;<\/code>&quot; lorsque nous avons besoin de &quot; <code>$text-size: 12px;<\/code>&quot;. Nous fournissons le tableau de variables au compilateur \u00e0 la ligne <code>#17<\/code>, lui indiquant de compiler en utilisant ces variables.<\/p>\n<p>Ensuite, \u00e0 la ligne, <code>#19-22<\/code>nous appelons la <code>compile()<\/code>fonction qui doit renvoyer le CSS compil\u00e9 sous forme de cha\u00eene. Nous produisons une <code>&lt;style&gt;<\/code>balise avec la cha\u00eene CSS \u00e0 l&rsquo;int\u00e9rieur. Parce que nous sommes accroch\u00e9s \u00e0 <code>wp_head<\/code>, le Customizer affichera l&rsquo;aper\u00e7u avec le CSS modifi\u00e9 \u00e0 chaque fois qu&rsquo;un changement est effectu\u00e9.<\/p>\n<h2>4 Enregistrer le CSS compil\u00e9 dans la feuille de style du th\u00e8me<\/h2>\n<p>Le code de compilation du CSS est tr\u00e8s similaire \u00e0 l&rsquo;\u00e9tape pr\u00e9c\u00e9dente. La seule diff\u00e9rence est que nous \u00e9crivons maintenant le CSS dans un fichier au lieu de le sortir. Vous <strong>devriez vraiment<\/strong> envisager de mettre cela dans une fonction afin de ne pas r\u00e9p\u00e9ter le code, mais pour plus de clart\u00e9, j&rsquo;ai choisi de s\u00e9parer les deux.<\/p>\n<p>Nous nous accrochons \u00e0 <code>[customize_save_after](https:\/\/developer.wordpress.org\/reference\/hooks\/customize_save_after\/)<\/code>ce qui se d\u00e9clenche chaque fois que quelqu&rsquo;un clique sur Enregistrer dans WordPress Customizer. \u00c0 ce stade, nous r\u00e9cup\u00e9rons le SCSS source, d\u00e9finissons les valeurs des variables et le compilons en CSS. Avec la cha\u00eene CSS, nous utilisons une simple fonction PHP pour l&rsquo;\u00e9crire dans le fichier CSS du th\u00e8me.<\/p>\n<pre><code>add_action('customize_save_after', function() {\n    $compiler = new ScssPhpScssPhpCompiler();\n\u00a0\n    $source_scss = get_stylesheet_directory(). '\/assets\/scss\/style.scss';\n    $scssContents = file_get_contents($source_scss);\n    $import_path = get_stylesheet_directory(). '\/assets\/scss';\n    $compiler-&gt;addImportPath($import_path);\n    $target_css = get_stylesheet_directory(). '\/style.css';\n\u00a0\n    $variables = [\n        '$main' =&gt; get_theme_mod('theme-main', '#594c74'),\n        '$secondary' =&gt; get_theme_mod('theme-secondary', '#555'),\n        '$text-size' =&gt; get_theme_mod('theme-text-size', '12'). 'px',\n    ];      \n    $compiler-&gt;setVariables($variables);\n\u00a0\n    $css = $compiler-&gt;compile($scssContents);\n    if (!empty($css) &amp;&amp; is_string($css)) {\n        file_put_contents($target_css, $css);\n    }\n});<\/code><\/pre>\n<p>La seule diff\u00e9rence par rapport \u00e0 avant est \u00e0 la ligne <code>#8<\/code>o\u00f9 nous d\u00e9finissons le fichier cible dans lequel \u00e9crire et \u00e0 la ligne <code>#19<\/code>o\u00f9 nous \u00e9crivons dans le fichier.<\/p>\n<h2>\u00a0 Conclusion<\/h2>\n<p>Nous avons maintenant des param\u00e8tres de personnalisation qui contr\u00f4lent les variables dans le fichier SCSS du th\u00e8me et \u00e9crasent la feuille de style principale du th\u00e8me \u00e0 l&rsquo;aide de ces variables. Il n&rsquo;y a pas de limite au nombre ou au type de param\u00e8tres que vous souhaitez autoriser les utilisateurs du th\u00e8me \u00e0 personnaliser\u00a0! Investissez du temps dans la configuration d&rsquo;un syst\u00e8me appropri\u00e9 pour g\u00e9rer le formatage des diff\u00e9rents types de variables (par exemple, les pr\u00e9fixes ou les suffixes) et pour structurer correctement les param\u00e8tres du Customizer. Les utilisateurs du th\u00e8me appr\u00e9cieront la flexibilit\u00e9 et la facilit\u00e9 avec laquelle il est possible de personnaliser votre th\u00e8me !<\/p>\n<p>Vous pouvez \u00e9galement trouver diff\u00e9rentes fa\u00e7ons de g\u00e9rer l&rsquo;\u00e9criture de fichier du CSS final. Si vous ne voulez pas \u00e9craser la feuille de style principale, vous voudrez peut-\u00eatre la sortir dans un fichier diff\u00e9rent. Vous pouvez \u00e9galement envisager d&rsquo;utiliser <a href=\"https:\/\/sass-lang.com\/documentation\/at-rules\/control\/if\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">des conditions if-else dans SCSS<\/a>.<\/p>\n<p>Ce tutoriel a \u00e9t\u00e9 \u00e9crit pour vous donner un tremplin sur la fa\u00e7on dont vous pouvez personnaliser votre th\u00e8me WordPress \u00e0 partir de Customizer. Faites-moi savoir si cela vous a \u00e9t\u00e9 utile &#8211; ou si vous souhaitez un didacticiel plus avanc\u00e9 garantissant que la feuille de style du th\u00e8me n&rsquo;est pas \u00e9cras\u00e9e!<\/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>Ce tutoriel vous montrera comment ajouter des param\u00e8tres de th\u00e8me tels que les couleurs dans WordPress Customizer et compiler le th\u00e8me SCSS avec les variables choisies en PHP.<\/p>\n","protected":false},"author":1,"featured_media":224105,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,893,904,904,717,717,832,1110,801,801,832,925,925,841,841,862,862],"tags":[1167],"class_list":["post-234245","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-css-3","category-developpeur","category-guide-pour-les-debutants","category-n-a","category-php-3","category-sujets","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234245","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=234245"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234245\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/224105"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=234245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=234245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=234245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}