{"id":231540,"date":"2022-12-23T19:31:00","date_gmt":"2022-12-23T16:31:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231540"},"modified":"2022-12-07T10:54:58","modified_gmt":"2022-12-07T07:54:58","slug":"suunnittelumallit-wordpressille","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/suunnittelumallit-wordpressille\/","title":{"rendered":"Suunnittelumallit WordPressille"},"content":{"rendered":"\n<p>Mit\u00e4 kauemmin ty\u00f6skentelet tietyn alustan kanssa, sit\u00e4 enemm\u00e4n alat tunnistaa tiettyj\u00e4 tapoja tehd\u00e4 jotain. Ja on hyvin todenn\u00e4k\u00f6ist\u00e4, ett\u00e4 alat tunnistaa kaksi asiaa, jotka voidaan tehd\u00e4:<\/p>\n<ul>\n<li>tavalla, joka on nopeasti kehittyv\u00e4, mutta vaikeampi yll\u00e4pit\u00e4\u00e4 tai<\/li>\n<li>tavalla, joka kehittyy hitaammin, mutta on helpompi yll\u00e4pit\u00e4\u00e4.<\/li>\n<\/ul>\n<p>Tietenkin, kuten kaikki projektit, vaatimukset, rajoitukset, budjetit ja aika vaikuttavat kaikki siihen, mit\u00e4 pystyt toteuttamaan. Mutta pyrin siihen, ett\u00e4 riippumatta siit\u00e4, kuinka toteutat ratkaisun, alat tutustua siihen, kuinka tietty ongelma ratkaistaan.<\/p>\n<p>Jos ongelma on ratkaistava nopeasti, tied\u00e4t kompromissit, mutta tied\u00e4t todenn\u00e4k\u00f6isesti kuinka tehd\u00e4 se nopeasti. Vastaavasti, jos sinulla on hieman enemm\u00e4n aikaa (ja budjettia), voit kehitt\u00e4\u00e4 sit\u00e4 toisella tavalla, ja tied\u00e4t kuinka tehd\u00e4 se ja mahdollisesti jopa k\u00e4\u00e4ri\u00e4 sen testipaketteihin, jos rajoitukset sen sallivat.<\/p>\n<p>Riippumatta siit\u00e4, kuinka sinun on toteutettava ratkaisu, tied\u00e4t tavat, joilla voit tehd\u00e4 sen.<\/p>\n<p>Ja t\u00e4m\u00e4 her\u00e4tt\u00e4\u00e4 kysymyksen:<\/p>\n<p>Onko tietylle alustalle erityisi\u00e4 suunnittelumalleja? Ja jos on, mit\u00e4 suunnittelumalleja voi olla saatavana WordPressiss\u00e4?<\/p>\n<h2>Suunnittelumallit WordPressille<\/h2>\n<p>En tietenk\u00e4\u00e4n puhu suunnittelumalleista, joita <a href=\"https:\/\/en.wikipedia.org\/wiki\/Design_Patterns_(book)\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Gang of Four<\/a> kehitti niin monta vuosikymment\u00e4 sitten. Sen sijaan puhun tavoista tehd\u00e4 tiettyj\u00e4 asioita WordPressiss\u00e4.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160471-61e70b0325077.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-160471-61e70b0325077.png\" alt=\"Suunnittelumallit WordPressille\" ><\/a><\/p>\n<p>Esimerkiksi:<\/p>\n<ul>\n<li>puhdistaa tiedot asianmukaisesti ennen niiden kirjoittamista tietokantaan (viestit, taksonomiat, metatiedot ja niin edelleen),<\/li>\n<li>tietojen lukeminen tietokannasta WordPress-tietokanta-apuohjelman (tai <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/wpdb\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">$wpdb<\/a>) avulla,<\/li>\n<li>vahvistaa ja palauttaa tietoja tietokannasta pyydett\u00e4ess\u00e4,<\/li>\n<li>Ajax-pyynn\u00f6n turvallisuuden varmistaminen ennen mink\u00e4\u00e4n ty\u00f6n tekemist\u00e4,<\/li>\n<li>m\u00e4\u00e4rit\u00e4 mukautettu kysely oikein ja nollaa se, jotta se ei h\u00e4iritse p\u00e4\u00e4silmukkaa,<\/li>\n<li>sivukohtaisten resurssien lis\u00e4\u00e4minen sek\u00e4 WordPressin hallintoalueelle ett\u00e4 WordPressin julkiselle sivustolle,<\/li>\n<li>ja niin edelleen.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160471-61e70b06ec937.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-160471-61e70b06ec937.png\" alt=\"Suunnittelumallit WordPressille\" ><\/a><\/p>\n<p>T\u00e4ss\u00e4 on paljon asioita, jotka voisimme luetella. Mutta mielest\u00e4ni on syyt\u00e4 tutkia, milt\u00e4 jotkut n\u00e4ist\u00e4 voivat n\u00e4ytt\u00e4\u00e4.<\/p>\n<p>Ensinn\u00e4kin, mit\u00e4 ovat <a href=\"https:\/\/en.wikipedia.org\/wiki\/Design_Patterns\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">suunnittelumallit<\/a> klassisessa mieless\u00e4?<\/p>\n<blockquote>\n<p>Suunnittelukuvio on uudelleen k\u00e4ytett\u00e4v\u00e4 muoto suunnitteluongelman ratkaisusta. Idean esitteli arkkitehti Christopher Alexander, ja sit\u00e4 on mukautettu useille muille tieteenaloille, erityisesti tietojenk\u00e4sittelytieteeseen.<\/p>\n<\/blockquote>\n<p>Olen ty\u00f6skennellyt WordPressiss\u00e4 tarpeeksi kauan ja rakentanut sovelluksen avulla tarpeeksi laajennuksia ja ty\u00f6kaluja tunnistaakseni, kuinka tehd\u00e4 tiettyj\u00e4 asioita verrattuna johonkin omaper\u00e4iseen jokaiseen projektiin.<\/p>\n<p>Onko siis turvallista sanoa, ett\u00e4 on olemassa uudelleenk\u00e4ytett\u00e4vi\u00e4 asioita, joita voimme k\u00e4ytt\u00e4\u00e4 WordPressiss\u00e4 yleisiin ongelmiin? Varma. Ne pit\u00e4isi tietysti yleist\u00e4\u00e4.<\/p>\n<p>Joten aion valita keskitien t\u00e4ss\u00e4 ainakin bloggaamisen vuoksi. Aion aloittaa sarjan, jossa k\u00e4sitell\u00e4\u00e4n yll\u00e4 olevia aiheita koodin\u00e4ytteiden ohella.<\/p>\n<p>Ne tulevat olemaan lyhyit\u00e4 artikkeleita, ja teen kaikkeni varmistaakseni, ett\u00e4 niit\u00e4 on helppo seurata (koodikommenttien ja selitysten kera), ja kenties t\u00e4st\u00e4 tulee jotain enemm\u00e4n.<\/p>\n<h2>En puhu kirjastoista<\/h2>\n<p>T\u00e4t\u00e4 ei pid\u00e4 sekoittaa <a href=\"https:\/\/en.wikipedia.org\/wiki\/Library_(computing)\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kirjastoihin<\/a>. Muista, ett\u00e4 kirjastot ovat kuin pieni\u00e4 ohjelmistoja, joita voimme ehk\u00e4 k\u00e4ytt\u00e4\u00e4 itsen\u00e4isesti, tai ne voivat olla sarja ty\u00f6kaluja tai toimintoja, jotka voidaan tuoda projektiisi toimintojen lis\u00e4\u00e4miseksi.<\/p>\n<blockquote>\n<p>Tietojenk\u00e4sittelytieteess\u00e4 kirjasto on kokoelma haihtumattomia resursseja, joita tietokoneohjelmat k\u00e4ytt\u00e4v\u00e4t usein ohjelmistokehitykseen. N\u00e4it\u00e4 voivat olla konfigurointitiedot, dokumentaatio, ohjetiedot, viestimallit, valmiiksi kirjoitettu koodi ja aliohjelmat, luokat, arvot tai tyyppim\u00e4\u00e4ritykset.<\/p>\n<\/blockquote>\n<p>Ehk\u00e4 tiettyj\u00e4 WordPress-spesifisi\u00e4 malleja voitaisiin rakentaa heid\u00e4n kirjastoihinsa, mutta se ei ole postauksen tarkoitus.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160471-61e70b0a9a64d.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-160471-61e70b0a9a64d.png\" alt=\"Suunnittelumallit WordPressille\" ><\/a><\/p>\n<p>Sen sijaan yrit\u00e4n vain esitt\u00e4\u00e4 mahdollisia, yleisi\u00e4 malleja, jotka ovat olemassa WordPressiss\u00e4.<\/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>Ehk\u00e4 WordPressille on olemassa tiettyj\u00e4 suunnittelumalleja. T\u00e4ss\u00e4 viestiss\u00e4 ja tulevassa sarjassa kannattaa ehk\u00e4 tutustua niihin.<\/p>\n","protected":false},"author":1,"featured_media":236332,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[719,895,843,864],"tags":[1166],"class_list":["post-231540","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231540","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=231540"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231540\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/236332"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=231540"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=231540"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=231540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}