{"id":230026,"date":"2022-11-16T19:25:00","date_gmt":"2022-11-16T16:25:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230026"},"modified":"2022-11-09T19:45:56","modified_gmt":"2022-11-09T16:45:56","slug":"wordpress-mallit-aloittelijoille-miten-se-on","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/wordpress-mallit-aloittelijoille-miten-se-on\/","title":{"rendered":"WordPress-mallit aloittelijoille: miten se on"},"content":{"rendered":"\n<p>Kun aloin mietti\u00e4 mallien luomista WordPressiss\u00e4, ajattelin kahta asiaa:<\/p>\n<ol>\n<li>sis\u00e4lt\u00f6\u00e4 erityisesti <a href=\"https:\/\/tommcfarlin.com\/register\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4senille<\/a> ,<\/li>\n<li>sis\u00e4lt\u00f6\u00e4, joka voi hajota yhdeksi viestiksi.<\/li>\n<\/ol>\n<p>Mutta mit\u00e4 enemm\u00e4n ajattelin sit\u00e4, sit\u00e4 enemm\u00e4n ymm\u00e4rsin, ett\u00e4 se voitaisiin (ja luultavasti pit\u00e4isi) selitt\u00e4\u00e4 muutaman viestin aikana.<\/p>\n<p>Joten aion purkaa WordPress-mallien nykytilan ja sitten k\u00e4yt\u00e4nn\u00f6n tapoja, joilla voimme j\u00e4rjest\u00e4\u00e4 esimerkiksi laajennukset niin, ett\u00e4 k\u00e4yt\u00e4mme tavallista PHP:t\u00e4.<\/p>\n<p>Sen j\u00e4lkeen katson seuraavassa sarjassa, mit\u00e4 tarkoittaa muiden mallinnuskoneiden k\u00e4ytt\u00f6 (sek\u00e4 PHP:n ett\u00e4 JavaScriptin ty\u00f6ss\u00e4).<\/p>\n<p>Aluksi haluan kuitenkin katsoa, \u200b\u200bkuinka usein n\u00e4emme malleja, jotka on kirjoitettu sek\u00e4 WordPress-teemojen ett\u00e4 laajennusten yhteydess\u00e4.<\/p>\n<h2>WordPress-malleja aloittelijoille<\/h2>\n<p>Riippuen kokemuksestasi WordPressist\u00e4 ja muista PHP-pohjaisista j\u00e4rjestelmist\u00e4, sinun mallipohjasi m\u00e4\u00e4ritelm\u00e4 on erilainen kuin jonkun muun.<\/p>\n<p>Joten yritt\u00e4\u00e4kseni luoda yhteisen m\u00e4\u00e4ritelm\u00e4n, jota k\u00e4yt\u00e4n t\u00e4ss\u00e4 viestisarjassa, k\u00e4ytet\u00e4\u00e4n <a href=\"https:\/\/codex.wordpress.org\/Templates\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress Codexista:<\/a><\/p>\n<blockquote>\n<p>Mallit ovat tiedostoja, jotka s\u00e4\u00e4telev\u00e4t, miten WordPress-sivustosi n\u00e4ytet\u00e4\u00e4n verkossa.<\/p>\n<\/blockquote>\n<p>Sivulla kerrotaan edelleen, kuinka se toimii yhdess\u00e4 tietokannan ja muiden resurssien kanssa, ja suosittelen lukemaan siit\u00e4, jos et ole perehtynyt siihen.<\/p>\n<p>Yll\u00e4 oleva m\u00e4\u00e4ritelm\u00e4 toimii kuitenkin hyvin siihen, miten aion edet\u00e4 ajattelussani.<\/p>\n<h3>1 Miten se on (t\u00e4ll\u00e4 hetkell\u00e4)<\/h3>\n<p>Mit\u00e4 tulee WordPress-mallien ajatteluun, mielest\u00e4ni on hy\u00f6dyllist\u00e4 harkita yht\u00e4 mallia, jonka koodi <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2c02b22272f645076f7f735bd61a4034#file-00-content-container-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">n\u00e4ytt\u00e4\u00e4 t\u00e4lt\u00e4:<\/a><\/p>\n<pre><code>&lt;div id=\"content-container\"&gt;\n\n  &lt;p&gt;\n    Oh! The garbage chute was a really wonderful idea. What an incredible smell you've discovered! Let's get out of here! \n    Get away from there... No! wait! Will you forget it? I already tried it. It's magnetically sealed! Put that \n    thing away! You're going to get us all killed.\n  &lt;\/p&gt;\n\n  &lt;h2&gt;List of Post Titles For Acme Post Type&lt;\/h2&gt;\n  &lt;?php\n  $args = array(\n    'post_status'    =&gt; 'publish',\n    'post_type'      =&gt; 'acme',\n    'posts_per_page' =&gt; '10'\n  );\n  $custom_query = new WP_Query( $args );\n\n  if ($custom_query-&gt;have_posts()) {\n    echo '&lt;ul&gt;';\n    while ($custom_query-&gt;have_posts()) {\n      $custom_query-&gt;the_post();\n      echo '&lt;li&gt;'. get_the_title(). '&lt;\/li&gt;';\n    }\n    echo '&lt;\/ul&gt;';\n    wp_reset_postdata();\n  }\n  ?&gt;\n\n  &lt;p&gt;\n    Absolutely, Your Worship. Look, I had everything under control until you led us down here. You know, it's not \n    going to take them long to figure out what happened to us. It could be worst... It's worst. \n    There's something alive in here! That's your imagination. Something just moves past my leg! \n    Look! Did you see that? What? Help!\n  &lt;\/p&gt;\n\n&lt;\/div&gt;&lt;!-- #content-container --&gt;<\/code><\/pre>\n<p>Yll\u00e4 olevan koodin pointti on, ett\u00e4 n\u00e4et, ett\u00e4 siin\u00e4 sekoitetaan PHP ja HTML.<\/p>\n<p>Lis\u00e4ksi on t\u00e4rke\u00e4\u00e4 huomata, ett\u00e4 jokainen n\u00e4ist\u00e4 tiedostoista on tyylitelty CSS:n avulla ja ett\u00e4 niiden toimintaa voi ohjata JavaScriptin avulla. T\u00e4t\u00e4 varten voit kuvitella sen seuraavasti:<\/p>\n<p>T\u00e4m\u00e4 edustaa yht\u00e4 mallia, joka sekoittaa sek\u00e4 HTML:n ett\u00e4 PHP:n yhdeksi malliksi. Ja t\u00e4m\u00e4 malli muotoillaan sitten CSS:ll\u00e4 ja ohjataan JavaScriptill\u00e4.<\/p>\n<p>Kaikki n\u00e4m\u00e4 toimivat yhdess\u00e4 ja tarjoavat sen, mit\u00e4 k\u00e4ytt\u00e4j\u00e4 n\u00e4kee.<\/p>\n<h3>2 Saako kehitt\u00e4j\u00e4organisaatio suorituskyky\u00e4?<\/h3>\n<p>Mutta tapa, jolla t\u00e4m\u00e4 toimii, on tavallaan sotkuinen, ja vaikka se saattaa n\u00e4ytt\u00e4\u00e4 hyv\u00e4lt\u00e4 k\u00e4ytt\u00e4j\u00e4lle, se her\u00e4tt\u00e4\u00e4 kysymyksi\u00e4:<\/p>\n<ul>\n<li>Onko se niin suorituskykyinen kuin se voi olla?<\/li>\n<li>Kuinka helppoa on kehitt\u00e4j\u00e4n yll\u00e4pit\u00e4\u00e4?<\/li>\n<li>Mik\u00e4 on rakennusprosessi?<\/li>\n<li>miten omaisuutta yll\u00e4pidet\u00e4\u00e4n ja j\u00e4rjestet\u00e4\u00e4n?<\/li>\n<\/ul>\n<p>Toki suurin osa yll\u00e4 luetusta on hyvin kehitt\u00e4j\u00e4keskeist\u00e4, mutta huomaan, ett\u00e4 kun koodi on j\u00e4rjestetty siten, ett\u00e4 kehitt\u00e4jien on helppo ty\u00f6skennell\u00e4 sen kanssa, se voi usein olla helppoa jopa nopeampaa k\u00e4ytt\u00e4j\u00e4lle.<\/p>\n<p>Mit\u00e4 se kuitenkin tarkoittaa?<\/p>\n<ul>\n<li>Esittelemmek\u00f6 Sassin?<\/li>\n<li>Pienenn\u00e4mmek\u00f6 JavaScripti\u00e4?<\/li>\n<li>Kuinka yhdist\u00e4mme n\u00e4m\u00e4 varat ja tuomme ne?<\/li>\n<li>Ent\u00e4 mukautetut PHP-kyselyt, jotka tapahtuvat kunkin mallin yhteydess\u00e4?<\/li>\n<\/ul>\n<p>Ja vaikka ensimm\u00e4iset asiat ovat t\u00e4rkeit\u00e4 ja sen arvoisia (ja saatan k\u00e4sitell\u00e4 sarjassa t\u00e4m\u00e4n j\u00e4lkeen), logiikan erottaminen mallin sis\u00e4lt\u00e4 jopa ilman mallimoottoria voi auttaa tekem\u00e4\u00e4n koodista kehitt\u00e4j\u00e4keskeisemm\u00e4n.<\/p>\n<p>Nopeuttaako se asioita k\u00e4ytt\u00e4j\u00e4n kannalta? Ei v\u00e4ltt\u00e4m\u00e4tt\u00e4. Mutta se auttaa meit\u00e4 ottamaan ensimm\u00e4isen askeleen juuri siin\u00e4.<\/p>\n<h2>J\u00e4rjestet\u00e4\u00e4n uudelleen<\/h2>\n<p>T\u00e4m\u00e4n sarjan seuraavassa postauksessa puran esimerkin kautta sis\u00e4lt\u00f6\u00f6n, jota olemme tottuneet n\u00e4kem\u00e4\u00e4n WordPress-malleissa, ja alan organisoida sit\u00e4 uudelleen niin, ett\u00e4 se on paremmin organisoitu siten, ett\u00e4 tekniikoita voidaan k\u00e4ytt\u00e4\u00e4 eri projekteissa.<\/p>\n<p>T\u00e4m\u00e4 tarkoittaa asioiden siirt\u00e4mist\u00e4 toimintoihinsa (tai jopa luokkiinsa ja siten toimintoihinsa) ja siihen, kuinka voimme kutsua niit\u00e4 malliemme kontekstista.<\/p>\n<p>Viime k\u00e4dess\u00e4 t\u00e4m\u00e4 johtaa koodiin, joka on helpompi lukea, erottelee huolenaiheet paremmin ja vie meid\u00e4t kohti tapoja muuttaa tapaa, jolla tiedot lis\u00e4t\u00e4\u00e4n malliin.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mallit ovat tapa, jolla tiedot n\u00e4ytet\u00e4\u00e4n k\u00e4ytt\u00e4j\u00e4lle, mutta kuinka voimme ottaa WordPress-malleja ja parantaa niiden organisaatiota k\u00e4ytt\u00e4jille ja kehitt\u00e4jille?<\/p>\n","protected":false},"author":1,"featured_media":223990,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[927,895,843,864],"tags":[1166],"class_list":["post-230026","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aiheita","category-koodi","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/230026","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=230026"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/230026\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/223990"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=230026"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=230026"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=230026"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}