{"id":233757,"date":"2023-02-22T19:13:00","date_gmt":"2023-02-22T16:13:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233757"},"modified":"2022-11-11T12:13:50","modified_gmt":"2022-11-11T09:13:50","slug":"kaikki-tyylien-ja-komentosarjojen-lisaeaemisestae-wordpressiin","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/kaikki-tyylien-ja-komentosarjojen-lisaeaemisestae-wordpressiin\/","title":{"rendered":"Kaikki tyylien ja komentosarjojen lis\u00e4\u00e4misest\u00e4 WordPressiin"},"content":{"rendered":"\n<p>WordPress tarjoaa useita tapoja lis\u00e4t\u00e4 tyylej\u00e4 ja komentosarjoja k\u00e4ytt\u00f6liittym\u00e4lle ja j\u00e4rjestelm\u00e4nvalvojalle, sek\u00e4 tiedostojen lis\u00e4\u00e4miseen ett\u00e4 muuttujien\/tulosteen suoraan tulostamiseen. T\u00e4m\u00e4 viesti k\u00e4sittelee yksityiskohtaisesti koodiesimerkkej\u00e4 siit\u00e4, kuinka skriptej\u00e4 ja tyylej\u00e4 lis\u00e4t\u00e4\u00e4n WordPressiin oikealla tavalla.<\/p>\n<p>Skriptej\u00e4 ja tyylej\u00e4 voidaan rekister\u00f6id\u00e4 ja asettaa jonoon m\u00e4\u00e4ritt\u00e4m\u00e4ll\u00e4 yksil\u00f6lliset kahvat (slug-tyyppiset tunnukset), jolloin WordPress voi poistaa kaksoiskappaleet, kuten useita jQuery-kirjastoja, ja k\u00e4sitell\u00e4 riippuvuuksia (mik\u00e4 tyyli tai komentosarja ladataan ennen t\u00e4t\u00e4 ja sit\u00e4) .<\/p>\n<p>Jos ei ole erityist\u00e4 tarvetta rekister\u00f6id\u00e4 tyylej\u00e4 tai komentosarjoja, voit laittaa ne heti jonoon ja j\u00e4tt\u00e4\u00e4 rekister\u00f6innin v\u00e4liin. Tyylien ja komentosarjojen (<code>wp_dequeue_script<\/code>ja <code>wp_dequeue_style<\/code>) rekister\u00f6inti on my\u00f6s mahdollista kahvaan viittaamalla. Se yleens\u00e4 auttaa lis\u00e4\u00e4m\u00e4ll\u00e4 suuremman numeron koukun prioriteettiin (saamalla sen juoksemaan sen koukun j\u00e4lkeen, jossa kohteet olivat jonossa).<\/p>\n<p>PS: Tyylien ja komentosarjojen lis\u00e4\u00e4minen Gutenbergiin (sek\u00e4 j\u00e4rjestelm\u00e4nvalvojan ett\u00e4 k\u00e4ytt\u00f6liittym\u00e4n lohkot) selitet\u00e4\u00e4n viestiss\u00e4ni <a href=\"http:\/\/localhost\/awhitepixel\/blog\/gutenberg-the-basics\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Gutenberg: The Basics<\/a>.<\/p>\n<h2>Skriptien ja tyylien lis\u00e4\u00e4minen k\u00e4ytt\u00f6liittym\u00e4\u00e4n<\/h2>\n<p>Jos haluat lis\u00e4t\u00e4 tyylej\u00e4 ja skriptej\u00e4 vain k\u00e4ytt\u00f6liittym\u00e4\u00e4n, k\u00e4yt\u00e4 koukkua <code>wp_enqueue_scripts<\/code>. Koukun nimest\u00e4 huolimatta sit\u00e4 k\u00e4ytet\u00e4\u00e4n sek\u00e4 skripteihin ett\u00e4 tyyleihin. T\u00e4ss\u00e4 on esimerkki tyylitaulukon ja javascript-tiedoston asettamisesta jonoon teemassa:<\/p>\n<pre><code>add_action('wp_enqueue_scripts', function() {\n    \/\/ Styles\n    wp_enqueue_style('main-style', get_stylesheet_directory_uri().'\/style.css', [], '1.0');\n\u00a0\n    \/\/ Scripts\n    wp_enqueue_script('main-script', get_stylesheet_directory_uri().'\/assets\/js\/main.js', ['jquery'], '', true);\n});<\/code><\/pre>\n<p>Kolmas argumentti sek\u00e4 tyyleille ett\u00e4 skripteille on riippuvuuksia sis\u00e4lt\u00e4v\u00e4 matriisi. Esim. skriptej\u00e4 varten saatat haluta ladata jQuery-kirjaston ennen komentosarjatiedostoasi. <strong>Huomautus<\/strong>: WordPress-asennuksissa on mukana joukko yleisi\u00e4 komentosarjakirjastoja (esimerkiksi jQuery, jQuery UI, Backbone ja Underscore). Niin kauan kuin lis\u00e4\u00e4t <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_script\/#default-scripts-included-and-registered-by-wordpress\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jonkin n\u00e4ist\u00e4 kahvoista<\/a> riippuvuudeksi enqueue_script-tiedostoosi, WordPress lis\u00e4\u00e4 ne jonoon, joten sinun ei tarvitse lis\u00e4t\u00e4 omia tiedostojasi n\u00e4ihin kirjastoihin.<\/p>\n<p>Viides argumentti komentosarjoille on, pit\u00e4isik\u00f6 skripti ladata tunnisteen loppuun <code>&lt;body&gt;<\/code>(alatunnisteeseen) <code>&lt;head&gt;<\/code>tunnisteen sijaan.<\/p>\n<p>Jotta voit k\u00e4ytt\u00e4\u00e4 laajennusta, sinun on k\u00e4ytett\u00e4v\u00e4 muita menetelmi\u00e4 paikallisen tiedoston URL-osoitteen saamiseksi, esimerkiksi <code>plugin_dir_url(__FILE__)<\/code>.<\/p>\n<h2>Skriptien ja tyylien lis\u00e4\u00e4minen j\u00e4rjestelm\u00e4nvalvojaan<\/h2>\n<p>WordPress tarjoaa toisen koukun, <code>admin_enqueue_scripts<\/code>, tyylien ja komentosarjojen lis\u00e4\u00e4miseen vain j\u00e4rjestelm\u00e4nvalvojalle. K\u00e4yt\u00e4 samoja menetelmi\u00e4 kuin yll\u00e4 skriptien ja tyylien rekister\u00f6intiin, jonoon ja lokalisoimiseen:<\/p>\n<pre><code>add_action('admin_enqueue_scripts', function() {\n    global $pagenow, $post_type;\n    \/\/ Example: $hook == 'edit.php'\n    \/\/ Example: $post_type == 'post'\n    \/\/ wp_enqueue_style or wp_enqueue_script\n});<\/code><\/pre>\n<h2>Skriptien ja tyylien lis\u00e4\u00e4minen kirjautumissivulle<\/h2>\n<p>Koska kumpikaan yll\u00e4 olevista koukuista ei n\u00e4y j\u00e4rjestelm\u00e4nvalvojan kirjautumisn\u00e4yt\u00f6ss\u00e4, WordPress tarjoaa t\u00e4h\u00e4n tarkoitukseen erillisen koukun, <code>login_enqueue_scripts<\/code>.<\/p>\n<pre><code>add_action('login_enqueue_scripts', function() {\n    \/\/ wp_enqueue_style or wp_enqueue_script\n});<\/code><\/pre>\n<h2>Javascript-muuttujien tulostaminen<\/h2>\n<p>Javascript-muuttujien tulostamiseen (esim. polkujen, k\u00e4\u00e4nnettyjen merkkijonojen tai muiden muuttujien hankkimiseen voit k\u00e4ytt\u00e4\u00e4 wp_localize_scriptia. T\u00e4m\u00e4 toiminto vaatii jonossa olevan komentosarjan kahvan. Toinen parametri olisi muuttujan nimi ja kolmas sen arvo. Arvo voi olla taulukko, kuten esim. :<\/p>\n<pre><code>add_action('wp_enqueue_scripts', function() {\n    \/\/ wp_enqueue_script('main-script');  \/\/ Must exist!\n    $variable_to_js = [\n        'ajax_url' =&gt; admin_url('admin-ajax.php')\n    ];\n    wp_localize_script('main-script', 'Theme_Variables', $variable_to_js);\n});<\/code><\/pre>\n<p>Skriptin sis\u00e4ll\u00e4 sinulla on p\u00e4\u00e4sy v\u00e4litettyihin muuttujiin, kuten:<\/p>\n<pre><code>jQuery(document).ready(function($) { \n    console.log(Theme_Variables.ajax_url);\n});<\/code><\/pre>\n<p>T\u00e4ss\u00e4 koukussa voit k\u00e4ytt\u00e4\u00e4 globaaleja muuttujia <code>$pagenow<\/code>ja <code>$post_type<\/code>m\u00e4\u00e4ritt\u00e4\u00e4 tarkemmin, mihin haluat asettaa tyylisi ja komentosarjasi.<\/p>\n<h2>Sis\u00e4isten tyylien tulostaminen<\/h2>\n<p>Jos haluat tulostaa tekstin sis\u00e4isi\u00e4 tyylej\u00e4, esimerkiksi Customizerissa m\u00e4\u00e4ritt\u00e4millesi teemamuuttujille (esim. k\u00e4ytt\u00e4m\u00e4ll\u00e4 <code>get_theme_mod<\/code>), voit tulostaa ne k\u00e4ytt\u00e4m\u00e4ll\u00e4 <code>wp_add_inline_style<\/code>toimintoa. Se toimii melko samalla tavalla kuin Javascript-muuttujien tulostaminen, jossa sinun on annettava jonossa oleva tyylikahva:<\/p>\n<pre><code>add_action('wp_enqueue_scripts', function() {\n    \/\/ wp_enqueue_style('main-style');  \/\/ Must exist!\n\u00a0\n    $color = get_theme_mod('my-custom-color');  \/\/ e.g. #FF0000\n    $custom_css = \"\n        body {\n            background: {$color};\n        }\";\n        wp_add_inline_style('main-style', $custom_css);\n});<\/code><\/pre>\n<h2>Asynkronisten tunnisteiden lis\u00e4\u00e4minen skripteihin<\/h2>\n<p>Valitettavasti komentosarjatunnisteihisi ei ole lis\u00e4tt\u00e4v\u00e4\u00e4 suoraa toimintoa tai suodatinta <code>async<\/code>, mutta voimme saavuttaa t\u00e4m\u00e4n manipuloimalla merkkijonoa, jota WordPress k\u00e4ytt\u00e4\u00e4 kaikkien jonossa olevien komentosarjojen komentosarjatunnisteiden tulostamiseen, kuten n\u00e4in (muista m\u00e4\u00e4ritt\u00e4\u00e4 skriptisi sen kahvalla):<\/p>\n<pre><code>add_filter('script_loader_tag', function($tag, $handle, $src) {\n    if ('main-script' != $handle) {\n        return $tag;\n    }\n    return str_replace('&lt;script', '&lt;script async', $tag);\n}, 11, 3);<\/code><\/pre>\n<h2>Hy\u00f6dyllisi\u00e4 linkkej\u00e4 dokumentaatioon<\/h2>\n<ul>\n<li><a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/wp_enqueue_scripts\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_enqueue_scripts<\/a> (koukku)<\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/admin_enqueue_scripts\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">admin_enqueue_scripts<\/a> (koukku)<\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/login_enqueue_scripts\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">login_enqueue_scripts<\/a> (koukku)<\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_style\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_enqueue_style<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_dequeue_style\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_dequeue_style<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_script\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_enqueue_script<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_dequeue_script\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_dequeue_script<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_localize_script\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_localize_script<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_add_inline_style\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_add_inline_style<\/a><\/li>\n<\/ul>\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 viesti k\u00e4sittelee yksityiskohtaisesti koodiesimerkkej\u00e4 siit\u00e4, kuinka skriptej\u00e4 ja tyylej\u00e4 lis\u00e4t\u00e4\u00e4n WordPressiin oikealla tavalla, sek\u00e4 tiedostot ett\u00e4 tulosmuuttujat.<\/p>\n","protected":false},"author":1,"featured_media":224083,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[927,895,719,719,895,1110,834,843,803,803,834,927,864,864],"tags":[1166],"class_list":{"0":"post-233757","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-kehittaejae","12":"category-n-a","13":"category-opas-aloittelijoille","14":"category-opetusohjelmia","15":"category-php-5","19":"category-wordpress-5","21":"tag-affiai-fi"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233757","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=233757"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233757\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/224083"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=233757"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=233757"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=233757"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}