{"id":233676,"date":"2023-02-20T19:48:00","date_gmt":"2023-02-20T16:48:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233676"},"modified":"2022-11-11T08:47:48","modified_gmt":"2022-11-11T05:47:48","slug":"scss-n-kaeaentaeminen-php-llae-lisaeae-muuttujia-wordpress-muokkausohjelmaan-css-teeman-kaeaentaemistae-varten","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/scss-n-kaeaentaeminen-php-llae-lisaeae-muuttujia-wordpress-muokkausohjelmaan-css-teeman-kaeaentaemistae-varten\/","title":{"rendered":"SCSS:n k\u00e4\u00e4nt\u00e4minen PHP:ll\u00e4: Lis\u00e4\u00e4 muuttujia WordPress-muokkausohjelmaan CSS-teeman k\u00e4\u00e4nt\u00e4mist\u00e4 varten"},"content":{"rendered":"\n<p>T\u00e4m\u00e4 opetusohjelma n\u00e4ytt\u00e4\u00e4, kuinka voit lis\u00e4t\u00e4 teemaasetuksia, esim. teeman v\u00e4rej\u00e4, WordPress Customizerissa ja k\u00e4\u00e4nt\u00e4\u00e4 teematyylisivu uudelleen valituilla muuttujilla. Kun k\u00e4yt\u00e4t teematyyli\u00e4 SCSS:ss\u00e4 kirjaston avulla, voit helposti antaa teeman k\u00e4ytt\u00e4jien muokata mit\u00e4 tahansa teematyylitaulukon muuttujia ilman, ett\u00e4 heid\u00e4n tarvitsee muokata SCSS-tiedostoja itse.<\/p>\n<p>Mink\u00e4 tahansa hyv\u00e4n teeman tulisi mahdollistaa paljon mukauttamista. Ainakin p\u00e4\u00e4teeman v\u00e4rit pit\u00e4isi olla mahdollista asettaa. Sen sijaan, ett\u00e4 kirjoittaisit paljon rumaa CSS:\u00e4\u00e4 ohittaaksesi teeman v\u00e4rit kaikkialla, voit sen sijaan k\u00e4\u00e4nt\u00e4\u00e4 koko tyylitaulukon uudelleen suoraan Customizerista. T\u00e4m\u00e4 opetusohjelma opettaa sinulle kuinka!<\/p>\n<h2>Mit\u00e4 teemme \u2013 ja mit\u00e4 tarvitsemme<\/h2>\n<p>Oletan, ett\u00e4 teemallasi on jo hieman muotoilua SCSS-tiedostoissa, jotka olet jo k\u00e4\u00e4nt\u00e4nyt teeman p\u00e4\u00e4tiedostoon <code>style.css<\/code>. Ja k\u00e4ytt\u00e4m\u00e4ll\u00e4 SCSS:\u00e4\u00e4, m\u00e4\u00e4rit\u00e4t todenn\u00e4k\u00f6isimmin toistuvia asioita, kuten v\u00e4rit, koon tai keskeytyspisteet, SCSS-muuttujiksi ja k\u00e4yt\u00e4t n\u00e4it\u00e4 muuttujia koko tyyliss\u00e4si.<\/p>\n<p>Voit luoda SCSS-tiedostosi muuttujille mit\u00e4 tahansa ja kuinka monta tahansa mukauttaja-asetuksia haluat. V\u00e4rinvalitsimet, numero- ja tekstinsy\u00f6tt\u00f6 sopivat t\u00e4h\u00e4n t\u00e4ydellisesti. Kun k\u00e4ytt\u00e4j\u00e4 muuttaa asetuksia WordPress Customizerissa, h\u00e4n n\u00e4kee esikatselun teemasta muutettujen muuttujien kanssa. Ja kun he napsauttavat &quot;Tallenna&quot;, lopullinen CSS k\u00e4\u00e4nnet\u00e4\u00e4n p\u00e4\u00e4tyylitaulukon CSS-tiedostoon k\u00e4ytt\u00e4m\u00e4ll\u00e4 valittuja arvoja.<\/p>\n<p>Esimerkkin\u00e4 t\u00e4st\u00e4 opetusohjelmasta oletetaan, ett\u00e4 teeman p\u00e4\u00e4tyylitaulukon SCSS-tiedosto tekee <code>@import<\/code>tiedoston <code>variables.scss<\/code>. Siell\u00e4 olemme m\u00e4\u00e4ritt\u00e4neet kolme muuttujaa, jotka haluamme mukauttaa Customizerissa: Kaksi v\u00e4ri\u00e4 ja yksi tekstikoko <code>px<\/code>.<\/p>\n<pre><code>$main: #594c74 !default;\n$secondary: #555 !default;\n$text-size: 12px !default;<\/code><\/pre>\n<p>Huomaa, ett\u00e4 jotta SCSS voi m\u00e4\u00e4ritt\u00e4\u00e4 muuttujat uudelleen, <strong>ne on m\u00e4\u00e4ritett\u00e4v\u00e4<\/strong> komennolla <code>!default<\/code>. T\u00e4m\u00e4 on <a href=\"https:\/\/sass-lang.com\/documentation\/variables#default-values\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">s\u00e4\u00e4nt\u00f6 SCSS:ss\u00e4<\/a>. Jotta t\u00e4m\u00e4 opetusohjelma toimisi; kaikki muuttujat, joita haluat muokata, on m\u00e4\u00e4ritett\u00e4v\u00e4 oletusarvoiksi SCSS-tiedostoissasi.<\/p>\n<p>On sinun p\u00e4\u00e4tett\u00e4viss\u00e4si, milloin (tai haluatko) korvata CSS-tiedoston. T\u00e4ss\u00e4 opetusohjelmassa oletetaan, ett\u00e4 kun k\u00e4ytt\u00e4j\u00e4 napsauttaa &quot;Tallenna&quot; Customizerissa, se k\u00e4\u00e4nt\u00e4\u00e4 uudelleen ja kirjoittaa teeman CSS:\u00e4\u00e4n. Mutta kun Customizer-esikatselu on aktiivinen ja k\u00e4ytt\u00e4j\u00e4 muuttaa asetuksia (ennen kuin napsautat Tallenna), n\u00e4yt\u00e4mme yksinkertaisesti k\u00e4\u00e4nnetyn CSS:n verkkosivuston esikatselun otsikossa. Emme halua korvata CSS-tiedostoa heti, jos k\u00e4ytt\u00e4j\u00e4 haluaa peruuttaa tekem\u00e4ns\u00e4 muutokset.<\/p>\n<h3>\u00a0 Pit\u00e4\u00e4 mieless\u00e4\u2026<\/h3>\n<p>T\u00e4m\u00e4 opetusohjelma korvaa teeman <code>style.css<\/code>tiedoston aina, kun Customizer-asetukset tallennetaan.<\/p>\n<p>Oletan, ett\u00e4 olet jo k\u00e4\u00e4nt\u00e4nyt SCSS-tiedostosi k\u00e4\u00e4nt\u00e4j\u00e4ohjelmalla (esim. <a href=\"http:\/\/koala-app.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Koala<\/a> tai komentorivi). T\u00e4m\u00e4n koodin lis\u00e4\u00e4minen teemaan korvaa CSS-tiedoston, mutta se ei muuta l\u00e4hde-SCSS-tiedostoja. T\u00e4m\u00e4 tarkoittaa, ett\u00e4 aina kun teet muutoksia Customizeriin ja palaat sitten alkuper\u00e4isiin SCSS-tiedostoihisi ja k\u00e4\u00e4nn\u00e4t uudelleen, mukauttaminen-asetuksesi menetet\u00e4\u00e4n!<\/p>\n<p>On olemassa useita tapoja kiert\u00e4\u00e4 t\u00e4m\u00e4, ja se riippuu projektistasi ja ty\u00f6skentelytavasta. Useimmissa tapauksissa se ei olisi ongelma. Se on yleens\u00e4 vain asia pit\u00e4\u00e4 mieless\u00e4, kun kehit\u00e4t teemaasi. Jos annat viimeistellyn teemasi jonkun muun k\u00e4ytett\u00e4v\u00e4ksi, he eiv\u00e4t yleens\u00e4 koskettaisi SCSS-tiedostojasi.<\/p>\n<p>Kun t\u00e4m\u00e4 on poissa tielt\u00e4, aletaan tutkia, miten teemme t\u00e4m\u00e4n:<\/p>\n<ol>\n<li>Tutustutaan SCSSPHP-kirjastoon ja sis\u00e4llytet\u00e4\u00e4n se teemaamme<\/li>\n<li>Luo Customizer-asetukset jokaiselle SCSS-muuttujalle, jonka haluamme olla mukautettavissa<\/li>\n<li>Varmista, ett\u00e4 Customizer esikatselee muutokset liikkeell\u00e4 ollessasi<\/li>\n<li>Kun tallennamme Customizer-asetuksia, k\u00e4\u00e4nn\u00e4mme uudelleen ja korvaamme teeman CSS-tiedoston.<\/li>\n<\/ol>\n<h2>1 SCSSPHP-kirjasto<\/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=\"SCSS:n k\u00e4\u00e4nt\u00e4minen PHP:ll\u00e4: Lis\u00e4\u00e4 muuttujia WordPress-muokkausohjelmaan CSS-teeman k\u00e4\u00e4nt\u00e4mist\u00e4 varten\" ><\/a><\/p>\n<p>SCSS-tiedostojen k\u00e4\u00e4nt\u00e4miseen k\u00e4yt\u00e4mme <a href=\"https:\/\/scssphp.github.io\/scssphp\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">leafon SCSSPHP-kirjastoa<\/a> (MIT-lisenssi). Huomaa, ett\u00e4 t\u00e4m\u00e4 opetusohjelma on tarkoitettu SCSS-kirjastolle. Kirjaston kirjoittajalla on samanlainen <a href=\"https:\/\/github.com\/leafo\/lessphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">V\u00c4HEMM\u00c4N PHP-kirjasto<\/a>, jos haluat mieluummin k\u00e4ytt\u00e4\u00e4 V\u00c4HEMM\u00c4N, mutta muista, ett\u00e4 seuraava opetusohjelma on tarkoitettu SCSS-kirjastolle.<\/p>\n<p>SCSSPHP-kirjasto on todella helppok\u00e4ytt\u00f6inen! T\u00e4ss\u00e4 on yksinkertaistettu yleiskatsaus siit\u00e4, kuinka k\u00e4yt\u00e4mme kirjastoa teemamme PHP:ss\u00e4:<\/p>\n<ul>\n<li>Mukana kirjasto<\/li>\n<li>Luo uusi k\u00e4\u00e4nt\u00e4j\u00e4luokan esiintym\u00e4 kirjastosta<\/li>\n<li>Lataa l\u00e4hde-SCSS-tiedoston sis\u00e4lt\u00f6 ja v\u00e4lit\u00e4 se k\u00e4\u00e4nt\u00e4j\u00e4objektille<\/li>\n<li>M\u00e4\u00e4rittele assosiatiivinen taulukko; SCSS-muuttujien nimet (mukaan lukien <code>$<\/code>) avaimina ja niiden arvot. Mik\u00e4 tahansa t\u00e4m\u00e4n taulukon elementti ohittaa samannimiset muuttujat toimitetussa SCSS-tiedostossa.<\/li>\n<li>Pyyd\u00e4mme k\u00e4\u00e4nt\u00e4j\u00e4objektia k\u00e4\u00e4nt\u00e4m\u00e4\u00e4n ja vastaanottamaan k\u00e4\u00e4nnetyn CSS:n merkkijonona vastineeksi. Voimme sitten joko tulostaa t\u00e4m\u00e4n CSS <code>head<\/code>:n sis\u00e4ll\u00e4 tai kirjoittaa sen teeman <code>style.css<\/code>tiedostoon<\/li>\n<\/ul>\n<h3>\u00a0 Millaisia \u200b\u200bSCSS-muuttujia voimme k\u00e4\u00e4nt\u00e4\u00e4?<\/h3>\n<p>Yksinkertainen vastaus on: Mik\u00e4 tahansa kelvollinen SCSS-muuttuja!<\/p>\n<p>SCSSPHP-kirjasto voi k\u00e4\u00e4nt\u00e4\u00e4 mink\u00e4 tahansa kelvollisen SCSS-muuttujan, mutta muista, ett\u00e4 sinun on varmistettava, ett\u00e4 ne muotoillaan oikein mukauttajalta. Esimerkiksi v\u00e4rit on joko oltava etuliitteen\u00e4 a <code>#<\/code>for hex v\u00e4rit tai muotoiltava <code>rgb()<\/code>tai <code>rgba()<\/code>m\u00e4\u00e4ritelmi\u00e4. Kokomuuttuja on yleens\u00e4 liitett\u00e4v\u00e4 merkinn\u00f6ill\u00e4 &#8217; <code>px<\/code>&#8217;, &#8217; <code>em<\/code>&#8217;, &#8217; <code>%<\/code>&#8217; ja niin edelleen.<\/p>\n<p>Jos aiot tehd\u00e4 kehittyneen j\u00e4rjestelm\u00e4n SCSS-muuttujien kokoamiseen Customizer-teeman kautta, varmista, ett\u00e4 sinulla on hyv\u00e4 j\u00e4rjestelm\u00e4 jokaisen muuttujan muotoilemiseksi oikein!<\/p>\n<p>Otetaan ensimm\u00e4inen askel tielt\u00e4; kirjaston lataaminen ja sis\u00e4llytt\u00e4minen teemaamme:<\/p>\n<h3>SCSSPHP-kirjaston lataaminen ja sis\u00e4llytt\u00e4minen teemaasi<\/h3>\n<p>Ensimm\u00e4inen vaihe on <a href=\"https:\/\/scssphp.github.io\/scssphp\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">SCSSPHP-kirjaston<\/a> lataaminen. Napsauta linkitetyll\u00e4 sivulla &quot;Lataa&quot; -painiketta aivan yl\u00e4reunassa. Jos haluat mieluummin k\u00e4ytt\u00e4\u00e4 Composeria, sivusto tarjoaa oppaan t\u00e4h\u00e4n.<\/p>\n<p>Pura zip alikansioon jonnekin teemasi sis\u00e4ll\u00e4. Esimerkkin\u00e4 laitan sen <code>theme\/inc\/scssphp\/<\/code>kansioon.<\/p>\n<p>Avaa PHP-tiedosto, johon haluat lis\u00e4t\u00e4 koodin k\u00e4\u00e4nt\u00e4mist\u00e4 varten. Se voi olla suoraan teemasi sis\u00e4ll\u00e4 <code>functions.php<\/code>tai PHP-tiedoston sis\u00e4ll\u00e4 <code>functions.php<\/code>. Yksinkertaisuuden vuoksi kirjoitan kaiken sis\u00e4lle <code>functions.php<\/code>.<\/p>\n<p>Ennen kuin voimme k\u00e4ytt\u00e4\u00e4 kirjastoa, meid\u00e4n on sis\u00e4llytett\u00e4v\u00e4 se; niin kuin:<\/p>\n<pre><code>require_once(get_stylesheet_directory(). '\/inc\/scssphp\/scss.inc.php');<\/code><\/pre>\n<p>S\u00e4\u00e4d\u00e4 tiedostojesi polku vastaavasti. Meid\u00e4n on sis\u00e4llytett\u00e4v\u00e4 <code>scss.inc.php<\/code>kirjaston juurikansiosta l\u00f6ytyv\u00e4 tiedosto. Nyt t\u00e4m\u00e4n rivin j\u00e4lkeen voimme k\u00e4ytt\u00e4\u00e4 kirjaston tunteja!<\/p>\n<h2>2 Mukautusasetusten luominen SCSS-muuttujille<\/h2>\n<p>Luodaan muuttujillemme WordPress Customizer -asetukset. Tutoriaalin vuoksi lis\u00e4\u00e4mme asetukset yll\u00e4 mainituille SCSS-muuttujille: kaksi v\u00e4rinvalitsinta ja numeron sy\u00f6tt\u00f6.<\/p>\n<p>En mene yksityiskohtiin selitt\u00e4m\u00e4\u00e4n, kuinka Customizer-asetukset lis\u00e4t\u00e4\u00e4n \u2013 t\u00e4t\u00e4 varten on paljon opetusohjelmia. Alla olevassa koodiesimerkiss\u00e4 luon uuden osion ja laitan kolme asetusta sis\u00e4\u00e4n:<\/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>T\u00e4m\u00e4 koodi kytkeytyy <code>customize_register<\/code>ja lis\u00e4\u00e4 osion nimelt\u00e4 &quot;Teemamuuttujat&quot;. Sitten se lis\u00e4\u00e4 v\u00e4rinvalitsimen &#8217; <code>theme-main<\/code>&#8217;, toisen v\u00e4rivalitsimen &#8217; <code>theme-secondary<\/code>&#8217; ja numerosy\u00f6tteen &#8217; <code>theme-text-size<\/code>&#8217;. T\u00e4m\u00e4 kaikki on WordPressin oletustoimintoa. Lis\u00e4\u00e4n my\u00f6s set kunkin asetuksen oletusarvot samoihin arvoihin kuin <code>variables.scss<\/code>tiedostossa on m\u00e4\u00e4ritetty. T\u00e4m\u00e4 on vain sen varmistamiseksi, ett\u00e4 Customizer-asetukset alkavat oikeilla v\u00e4reill\u00e4.<\/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=\"SCSS:n k\u00e4\u00e4nt\u00e4minen PHP:ll\u00e4: Lis\u00e4\u00e4 muuttujia WordPress-muokkausohjelmaan CSS-teeman k\u00e4\u00e4nt\u00e4mist\u00e4 varten\" ><\/a><\/p>\n<p>Se n\u00e4ytt\u00e4\u00e4 upealta! Mutta t\u00e4ll\u00e4 hetkell\u00e4 mit\u00e4\u00e4n ei tapahdu, kun s\u00e4\u00e4d\u00e4t n\u00e4it\u00e4 muuttujia. Jatketaan vaiheesta 3; esikatselun k\u00e4sittely mukauttajassa.<\/p>\n<h2>3 K\u00e4\u00e4nn\u00e4 CSS liikkeell\u00e4 ollessasi Customizerin esikatselussa<\/h2>\n<p>T\u00e4m\u00e4 vaihe k\u00e4sittelee Customizer-esikatselun p\u00e4ivitt\u00e4misen, kun k\u00e4ytt\u00e4j\u00e4 muuttaa asetuksia, eik\u00e4 kirjoita tiedostoihimme. Sen sijaan tulostamme k\u00e4\u00e4nnetyn CSS: <code>&lt;head&gt;<\/code>n esikatselussa <code>&lt;style&gt;<\/code>tagin sis\u00e4ll\u00e4. T\u00e4ll\u00e4 tavalla varmistamme, ett\u00e4 tekstin sis\u00e4inen CSS ohittaa kaikki alkuper\u00e4isen CSS-tiedoston tyylit.<\/p>\n<p>Tarkistaaksemme, k\u00e4yt\u00e4mmek\u00f6 t\u00e4ll\u00e4 hetkell\u00e4 Customizer-esikatselua, k\u00e4yt\u00e4mme toimintoa <code>[is_customize_preview](https:\/\/developer.wordpress.org\/reference\/functions\/is_customize_preview\/)()<\/code>. Kun t\u00e4m\u00e4 palaa <code>true<\/code>, luomme funktion, joka on koukussa <code>wp_head<\/code>. Toiminnon sis\u00e4ll\u00e4 k\u00e4ynnist\u00e4mme ja m\u00e4\u00e4rit\u00e4mme SCSSPHP-kirjaston, haemme nykyiset asetusarvot, k\u00e4\u00e4nn\u00e4mme CSS:n ja tulostamme sen <code>&lt;style&gt;<\/code>tagissa.<\/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>Rivill\u00e4 <code>#7<\/code>m\u00e4\u00e4rit\u00e4mme polun l\u00e4hde-SCSS-tiedostoon ja lataamme sen sis\u00e4ll\u00f6n muuttujaan osoitteessa <code>#8<\/code>. Ja linjalla <code>#9<\/code>ja m\u00e4\u00e4ritimme <code>#10<\/code>kirjaston tuontipolun varmistaaksemme, ett\u00e4 kaikki <code>@import<\/code>s toimivat oikein SCSS-tiedostoissamme. Voit lukea t\u00e4st\u00e4 lis\u00e4\u00e4 <a href=\"https:\/\/scssphp.github.io\/scssphp\/docs\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kirjaston dokumentaatiosivustolta kohdasta<\/a> &quot;Tuontipolut&quot;. Periaatteessa SCSSPHP-kirjaston on tiedett\u00e4v\u00e4 SCSS-kansiosi suhteellinen polku, jotta kaikki <code>@import<\/code>polut ovat oikein.<\/p>\n<p>Rivill\u00e4 <code>#12-16<\/code>luomme taulukon k\u00e4\u00e4nt\u00e4j\u00e4lle; assosiatiivinen taulukko, jossa muuttujien nimet ovat avaimia. Arvoille, joita k\u00e4yt\u00e4mme <code>[get_theme_mod](https:\/\/developer.wordpress.org\/reference\/functions\/get_theme_mod\/)()<\/code>arvojen saamiseen Customizerista. Toiminnon <code>get_theme_mod()<\/code>avulla voit m\u00e4\u00e4ritt\u00e4\u00e4 oletusarvon toiseksi parametriksi, jos arvoa ei tallennettu. T\u00e4m\u00e4 s\u00e4\u00e4st\u00e4\u00e4 meid\u00e4t kaatumasta k\u00e4\u00e4nt\u00e4j\u00e4lle arvoilla, kuten <code>null<\/code>. Joten tarjoamme saman oletusarvon kuin SCSS-muuttujatiedostossamme ja kun rekister\u00f6imme mukauttaja-asetukset.<\/p>\n<p>Huomaa my\u00f6s, ett\u00e4 rivill\u00e4 oleva koodi <code>#15<\/code>lis\u00e4\u00e4 merkin <code>px<\/code>, joka varmistaa, ett\u00e4 muuttujan todellinen arvo on kelvollinen. Muuten se k\u00e4\u00e4nt\u00e4isi &quot; <code>$text-size: 12;<\/code>&quot;, kun tarvitsemme &quot; <code>$text-size: 12px;<\/code>&quot;. Annamme muuttujataulukon k\u00e4\u00e4nt\u00e4j\u00e4lle rivill\u00e4 <code>#17<\/code>, k\u00e4skem\u00e4ll\u00e4 sen k\u00e4\u00e4nt\u00e4m\u00e4\u00e4n n\u00e4it\u00e4 muuttujia k\u00e4ytt\u00e4en.<\/p>\n<p>Sitten rivill\u00e4 <code>#19-22<\/code>kutsumme <code>compile()<\/code>funktiota, jonka pit\u00e4isi palauttaa k\u00e4\u00e4nnetty CSS merkkijonona. Tulostamme <code>&lt;style&gt;<\/code>tagin, jonka sis\u00e4ll\u00e4 on CSS-merkkijono. Koska olemme koukussa <code>wp_head<\/code>-palveluun, muokkausty\u00f6kalu n\u00e4ytt\u00e4\u00e4 esikatselun muuttuneella CSS:ll\u00e4 aina, kun muutos tehd\u00e4\u00e4n.<\/p>\n<h2>4 Tallenna k\u00e4\u00e4nnetty CSS teeman tyylisivulle<\/h2>\n<p>CSS:n k\u00e4\u00e4nt\u00e4misen koodi on hyvin samanlainen kuin edellinen vaihe. Ainoa ero on, ett\u00e4 kirjoitamme nyt CSS:n tiedostoon sen sijaan, ett\u00e4 tulostamme sen. Sinun <strong>pit\u00e4isi todella<\/strong> harkita t\u00e4m\u00e4n laittamista funktioon, jotta et toista koodia, mutta selvyyden vuoksi olen p\u00e4\u00e4tt\u00e4nyt erottaa n\u00e4m\u00e4 kaksi toisistaan.<\/p>\n<p>Otamme kiinni, <code>[customize_save_after](https:\/\/developer.wordpress.org\/reference\/hooks\/customize_save_after\/)<\/code>mitk\u00e4 triggerit napsauttavat Tallenna WordPress Customizerissa. T\u00e4ss\u00e4 vaiheessa noudetaan l\u00e4hde-SCSS, m\u00e4\u00e4ritell\u00e4\u00e4n muuttujien arvot ja k\u00e4\u00e4nnet\u00e4\u00e4n se CSS:ksi. CSS-merkkijonolla k\u00e4yt\u00e4mme yksinkertaista PHP-funktiota sen kirjoittamiseen teeman CSS-tiedostoon.<\/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>Ainoa ero aiempaan on rivill\u00e4 <code>#8<\/code>, jolla m\u00e4\u00e4rit\u00e4mme kohdetiedoston, johon kirjoitetaan, ja rivill\u00e4 <code>#19<\/code>, jolla kirjoitamme tiedostoon.<\/p>\n<h2>\u00a0 Johtop\u00e4\u00e4t\u00f6s<\/h2>\n<p>Meill\u00e4 on nyt Customizer-asetukset, jotka ohjaavat muuttujia teeman SCSS-tiedostossa ja korvaavat teeman p\u00e4\u00e4tyylitaulukon n\u00e4iden muuttujien avulla. Ei ole rajoituksia sille, kuinka monta tai millaisia \u200b\u200basetuksia haluat antaa teeman k\u00e4ytt\u00e4jien muokata! K\u00e4yt\u00e4 aikaa oikean j\u00e4rjestelm\u00e4n luomiseen, jotta voit k\u00e4sitell\u00e4 eri muuttujatyyppien muotoilua (esim. etuliitteet tai j\u00e4lkiliitteet) ja muokata mukauttaja-asetukset oikein. Teeman k\u00e4ytt\u00e4j\u00e4t arvostavat joustavuutta ja kuinka helppoa on mukauttaa teemasi!<\/p>\n<p>Voit my\u00f6s selvitt\u00e4\u00e4 erilaisia \u200b\u200btapoja k\u00e4sitell\u00e4 lopullisen CSS:n tiedostojen kirjoittamista. Jos et halua korvata p\u00e4\u00e4tyylitaulukkoa, haluat ehk\u00e4 tulostaa sen toiseen tiedostoon. Voit my\u00f6s <a href=\"https:\/\/sass-lang.com\/documentation\/at-rules\/control\/if\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">harkita if-else-ehtojen k\u00e4ytt\u00f6\u00e4 SCSS:ss\u00e4<\/a>.<\/p>\n<p>T\u00e4m\u00e4 opetusohjelma on kirjoitettu antamaan sinulle ponnahduslauta WordPress-teeman mukauttamiseen Customizerin avulla. Kerro minulle, oliko siit\u00e4 sinulle hy\u00f6ty\u00e4 \u2013 tai jos haluat kehittyneemm\u00e4n opetusohjelman, joka varmistaa, ett\u00e4 teeman tyylitaulukkoa ei kirjoiteta p\u00e4\u00e4lle!<\/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>T\u00e4m\u00e4 opetusohjelma n\u00e4ytt\u00e4\u00e4 sinulle, kuinka voit lis\u00e4t\u00e4 teema-asetuksia, kuten v\u00e4rej\u00e4 WordPress Customizeriin, ja k\u00e4\u00e4nt\u00e4\u00e4 teeman SCSS valituilla muuttujilla PHP:ss\u00e4.<\/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":[927,895,906,906,719,719,895,1110,834,843,803,803,834,927,843,864,864],"tags":[1166],"class_list":{"0":"post-233676","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-aiheita","8":"category-koodi","9":"category-css-5","11":"category-kehittaejae","14":"category-n-a","15":"category-opas-aloittelijoille","16":"category-opetusohjelmia","17":"category-php-5","22":"category-wordpress-5","24":"tag-affiai-fi"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=233676"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233676\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/224105"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=233676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=233676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=233676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}