{"id":233592,"date":"2023-02-18T13:27:00","date_gmt":"2023-02-18T10:27:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233592"},"modified":"2022-11-11T00:31:42","modified_gmt":"2022-11-10T21:31:42","slug":"wordpress-teeman-opetusohjelma-aloittelijoille-osa-3-dynaaminen-sisaeltoe","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/wordpress-teeman-opetusohjelma-aloittelijoille-osa-3-dynaaminen-sisaeltoe\/","title":{"rendered":"WordPress-teeman opetusohjelma aloittelijoille \u2013 Osa 3: Dynaaminen sis\u00e4lt\u00f6"},"content":{"rendered":"\n<p>T\u00e4ll\u00e4 WordPress-teeman opetusohjelman aloittelijoille oppitunnilla opimme WordPressin koukuista ja lis\u00e4\u00e4mme teemaamme muutamia koukkuja, joita tarvitaan, jotta teema toimisi kunnolla WordPressin ja laajennusten kanssa. Aloitamme my\u00f6s p\u00e4\u00e4syn WordPressin dynaamiseen sis\u00e4lt\u00f6\u00f6n otsikossamme, esimerkiksi saamaan automaattisesti nykyisen sivun otsikon.<\/p>\n<p>Ensin meid\u00e4n on opittava hieman WordPressin koukuista. Koukut ovat ydintoiminto, johon sinun on tutustuttava. En ole fani siit\u00e4, ett\u00e4 n\u00e4yt\u00e4t vain kokonaisen joukon koodia, jossa sinun t\u00e4ytyy kopioida + liitt\u00e4\u00e4 tiet\u00e4m\u00e4tt\u00e4, mit\u00e4 se todella tekee. Jos seuraat t\u00e4t\u00e4 opetusohjelmaa, haluat oppia t\u00e4m\u00e4n kunnolla, eik\u00f6 niin?<\/p>\n<p>\u00c4l\u00e4 huoli, pid\u00e4n sen toistaiseksi lyhyen\u00e4. Opimme n\u00e4ist\u00e4 lis\u00e4\u00e4 my\u00f6hemmin t\u00e4ss\u00e4 opetusohjelmassa.<\/p>\n<h2>Koukut WordPressiss\u00e4<\/h2>\n<p>Lyhyesti; Koska WordPress suorittaa kaiken koodin sivun lataamista ja render\u00f6inti\u00e4 varten, on tiettyj\u00e4 &quot;tarkistuspisteit\u00e4&quot; \u2013 joita kutsumme koukuiksi. N\u00e4iss\u00e4 pisteiss\u00e4 WordPress antaa kehitt\u00e4jille mahdollisuuden muokata tai lis\u00e4t\u00e4 omaa koodiaan. WordPress on m\u00e4\u00e4ritellyt joukon &quot;tarkistuspisteit\u00e4&quot;, joissa, jokaisella on yksil\u00f6llinen nimi. Jos tied\u00e4t sen nimen, voit lis\u00e4t\u00e4 oman koodisi n\u00e4ihin tarkistuspisteisiin. N\u00e4in voit helposti k\u00e4ske\u00e4 WordPressi\u00e4 suorittamaan koodisi, kun se saavuttaa kyseisen tarkistuspisteen osana prosessiaan.<\/p>\n<p>Koukkuja on kahdenlaisia; toiminnot ja suodattimet. <strong>Toiminnot<\/strong> ovat koodin kohtia, joihin voit lis\u00e4t\u00e4 mukautetun koodin, esimerkiksi tulostaa jotain tai tehd\u00e4 jotain omiin tarkoituksiinsa. <strong>Suodattimet<\/strong> ovat koodin kohtia, joissa voit muokata tietty\u00e4 muuttujaa ennen sen k\u00e4ytt\u00f6\u00e4 tai tulostamista. Ne ovat hyvin samankaltaisia, mutta suodattimet on liitetty yhteen tiettyyn muuttujaan, mutta toiminnot eiv\u00e4t.<\/p>\n<p>Laajennukset, teemat ja itse WordPress voivat &quot;kiinnitt\u00e4\u00e4&quot; koodinsa <code>add_action()<\/code>toimiin ja <code>add_filter()<\/code>suodattimiin. N\u00e4m\u00e4 kaksi toimintoa k\u00e4skev\u00e4t WordPressin suorittamaan koukussa olevan koodin aina, kun suoritus saavuttaa n\u00e4m\u00e4 koukut.<\/p>\n<p>M\u00e4\u00e4ritt\u00e4\u00e4ksesi koukut, joita k\u00e4yt\u00e4t <code>do_action()<\/code>toimiin ja <code>apply_filters()<\/code>suodattimiin.<\/p>\n<p>Kaikille, jotka ovat kiinnostuneita tiet\u00e4m\u00e4\u00e4n lis\u00e4\u00e4, minulla on toinen viesti, jossa k\u00e4sitell\u00e4\u00e4n yksityiskohtaisesti WordPressin <a href=\"http:\/\/awhitepixel.com\/blog\/all-about-hooks-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">koukkuja .<\/a><\/p>\n<p>WordPress-teeman tulee sis\u00e4lt\u00e4\u00e4 tiettyj\u00e4 t\u00e4rkeit\u00e4 koukkuja (toimintoja). N\u00e4iden koukkujen avulla WordPress, laajennukset ja itse teemamme voivat liitty\u00e4 kriittisiin asioihin ja tehd\u00e4 niit\u00e4. Katsotaanpa niit\u00e4 kriittisi\u00e4 koukkuja, jotka meid\u00e4n on lis\u00e4tt\u00e4v\u00e4.<\/p>\n<h2>Teeman yl\u00e4- ja alatunnisteen koukut<\/h2>\n<p>Kaikissa WordPress-teemoissa on oltava kaksi koukkua malleissa. Yksi toiminto on sijoitettava otsikkoon (<code>&lt;head&gt;<\/code>tunnisteen sis\u00e4\u00e4n) ja toinen alatunnisteeseen (juuri ennen <code>&lt;\/body&gt;<\/code>tagin sulkemista). N\u00e4m\u00e4 kaksi koukkua ovat ehdottoman v\u00e4ltt\u00e4m\u00e4tt\u00f6mi\u00e4, jotta WordPress, teemasi ja mik\u00e4 tahansa laajennus voivat lis\u00e4t\u00e4 skriptit ja tyylikoodinsa teemaasi.<\/p>\n<p>Tarvittavat koukut ovat <code>wp_head<\/code>ja <code>wp_footer<\/code>vastaavasti yl\u00e4- ja alatunnisteelle.<\/p>\n<p>Normaalisti kun haluamme ajaa koukun, soitamme <code>do_action(&lt;hook name&gt;)<\/code>. Mutta koska n\u00e4m\u00e4 kaksi koukkua ovat niin t\u00e4rkeit\u00e4, WordPress on yksinkertaistanut niit\u00e4 meille asettamalla ne yksinkertaiseen funktiokutsuun. Joten voit k\u00e4ytt\u00e4\u00e4 n\u00e4it\u00e4 kahta koukkua <code>wp_head()<\/code>ja <code>wp_footer()<\/code>. Taustalla n\u00e4m\u00e4 kaksi ajavat <code>do_action()<\/code>.<\/p>\n<p>Lis\u00e4t\u00e4\u00e4n n\u00e4m\u00e4 kaksi koukkua (funktiokutsuja) yl\u00e4- ja alatunnistemalleihimme ja katsotaan mit\u00e4 tapahtuu.<\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n    &lt;head&gt;\n        &lt;meta charset=\"utf-8\"&gt;\n        &lt;title&gt;A White Pixel Theme&lt;\/title&gt;\n\u00a0\n        &lt;?php wp_head(); ?&gt;\n    &lt;\/head&gt;\n&lt;body&gt;<\/code><\/pre>\n<pre><code>        &lt;?php wp_footer(); ?&gt;\n    &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Napauta p\u00e4ivitt\u00e4mist\u00e4 k\u00e4ytt\u00f6liittym\u00e4ss\u00e4si. Jos olet kirjautunut sis\u00e4\u00e4n, sinun pit\u00e4isi nyt n\u00e4hd\u00e4 WordPressin hallintapalkki! T\u00e4m\u00e4 tarkoittaa, ett\u00e4 WordPress voi nyt onnistuneesti lis\u00e4t\u00e4 skriptit ja tyylit teemaasi.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152824-61e4fb80a88c0.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-152824-61e4fb80a88c0.png\" alt=\"WordPress-teeman opetusohjelma aloittelijoille \u2013 Osa 3: Dynaaminen sis\u00e4lt\u00f6\" ><\/a><\/p>\n<p>Voit tarkistaa HTML-l\u00e4hteesi ja n\u00e4hd\u00e4, ett\u00e4 otsikko sis\u00e4lt\u00e4\u00e4 nyt melkoisen m\u00e4\u00e4r\u00e4n koodia. T\u00e4m\u00e4 on koodi, jota et lis\u00e4nnyt teemaasi. Kuten n\u00e4ette, WordPress itse k\u00e4ytt\u00e4\u00e4 lis\u00e4\u00e4mi\u00e4mme koukkuja tehd\u00e4kseen omia juttujaan.<\/p>\n<p>Siirryt\u00e4\u00e4n eteenp\u00e4in koukuista ja aletaan tutkia, kuinka voimme dynaamisesti hakea sis\u00e4lt\u00f6\u00e4 WordPressist\u00e4 ja tulostaa ne otsikkoon.<\/p>\n<h2>Dynaaminen sis\u00e4lt\u00f6 otsikossa<\/h2>\n<p>K\u00e4sket\u00e4\u00e4n WordPressia asettamaan dynaamisesti asiakirjan otsikko (<code>&lt;title&gt;<\/code>tunnisteelle). T\u00e4t\u00e4 varten k\u00e4yt\u00e4mme funktiota, (jossa on muuten suodatin), nimelt\u00e4 <code>wp_title()<\/code>. Kuten yll\u00e4 opimme, koska <code>wp_title()<\/code>olet suodatin, sin\u00e4, WordPress tai laajennukset voit muokata tulosta. Lis\u00e4\u00e4mme t\u00e4h\u00e4n suodattimen my\u00f6hemmin t\u00e4ss\u00e4 opetusohjelmassa.<\/p>\n<p>Funktiossa <code>wp_title()<\/code>on <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_title\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">useita argumentteja<\/a>, joita voit muokata mieleiseksesi, mutta lis\u00e4\u00e4n toistaiseksi tyhj\u00e4n merkkijonon, jotta se n\u00e4ytt\u00e4\u00e4 vain sen sivun otsikon, jolla olemme.<\/p>\n<p>Vaihda <code>&lt;title&gt;<\/code>tagisi <code>header.php<\/code>t\u00e4h\u00e4n:<\/p>\n<pre><code>&lt;title&gt;&lt;?php wp_title(''); ?&gt;&lt;\/title&gt;<\/code><\/pre>\n<p>Innokas olet ehk\u00e4 huomannut, ett\u00e4 etusivulle ei tule otsikkoa. T\u00e4m\u00e4 on tavallista WordPress-k\u00e4ytt\u00e4ytymist\u00e4, jonka korjaamme my\u00f6hemmin t\u00e4ss\u00e4 opetusohjelmassa (teemme t\u00e4m\u00e4n suodattimen avulla). Jos vierailet yhdell\u00e4 viestill\u00e4 tai sivulla, sinun pit\u00e4isi saada viestin otsikko.<\/p>\n<p>WordPressiss\u00e4 on n\u00e4pp\u00e4r\u00e4 toiminto, joka luo dynaamisesti joukon luokkia <code>&lt;body&gt;<\/code>tunnisteelle riippuen siit\u00e4, mill\u00e4 sivulla olemme; nimelt\u00e4 <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/body_class\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">body_class<\/a>. P\u00e4ivit\u00e4 <code>&lt;body&gt;<\/code>tagi <code>header.php<\/code>t\u00e4h\u00e4n:<\/p>\n<pre><code>&lt;body &lt;?php body_class(); ?&gt;&gt;<\/code><\/pre>\n<p>P\u00e4ivit\u00e4 ja katso kaikki <code>&lt;body&gt;<\/code>tunnisteeseen lis\u00e4tyt luokat. Katso eri sivuja (etusivu, single, kategoria). Kaikki n\u00e4m\u00e4 luokat ovat eritt\u00e4in hy\u00f6dyllisi\u00e4 muotoiluun ja erilaisten samanlaisten osien erottamiseen. K\u00e4yt\u00e4t todenn\u00e4k\u00f6isesti joitain n\u00e4ist\u00e4 CSS:ss\u00e4si.<\/p>\n<p>Hyvien HTML-k\u00e4yt\u00e4nt\u00f6jen noudattamiseksi meid\u00e4n tulee ilmoittaa my\u00f6s sivuston kieli HTML:ss\u00e4. T\u00e4t\u00e4 varten k\u00e4yt\u00e4mme WordPress-toimintoa saadaksemme kielen asetuksista; <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/language_attributes\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kielen_attribuutit<\/a>.<\/p>\n<pre><code>&lt;html &lt;?php language_attributes(); ?&gt;&gt;<\/code><\/pre>\n<p>Ja lopuksi haluaisin lis\u00e4t\u00e4 joitain metatageja ja sellaisia, jotka eiv\u00e4t ole WordPress-kohtaisia, mutta noudattavat yleisi\u00e4 web-suunnitteluk\u00e4yt\u00e4nt\u00f6j\u00e4. T\u00e4lt\u00e4 koko <code>header.php<\/code>tiedosto n\u00e4ytt\u00e4\u00e4:<\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html class=\"no-js\" &lt;?php language_attributes(); ?&gt;&gt;\n&lt;head&gt;\n    &lt;meta charset=\"utf-8\"&gt;\n    &lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"&gt;\n\u00a0\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;title&gt;&lt;?php wp_title(''); ?&gt;&lt;\/title&gt;\n\u00a0\n    &lt;?php wp_head(); ?&gt;\n&lt;\/head&gt;\n&lt;body &lt;?php body_class(); ?&gt;&gt;<\/code><\/pre>\n<p>T\u00e4m\u00e4n opetusohjelman seuraavaa vaihetta varten l\u00e4hdemme <code>header.php<\/code>ja sukeltaamme <code>index.php<\/code>oppiaksemme hakemaan dynaamisempaa sis\u00e4lt\u00f6\u00e4, kuten viestej\u00e4.<\/p>\n<h2>Dokumentaatio k\u00e4ytetyist\u00e4 menetelmist\u00e4<\/h2>\n<ul>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_head\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_head<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_footer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_footer<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_title\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_title<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/body_class\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">body_class<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/language_attributes\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kielen_attribuutit<\/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\u00e4ll\u00e4 oppitunnilla opit WordPressin koukuista ja WordPressin dynaamisen sis\u00e4ll\u00f6n k\u00e4ytt\u00e4misest\u00e4 ja tulostamisesta otsikossa.<\/p>\n","protected":false},"author":1,"featured_media":224746,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[927,895,719,719,895,917,917,1110,834,843,834,927,843,864,864],"tags":[1166],"class_list":["post-233592","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aiheita","category-koodi","category-kehittaejae","category-muut","category-n-a","category-opas-aloittelijoille","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233592","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=233592"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233592\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/224746"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=233592"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=233592"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=233592"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}