{"id":229201,"date":"2022-10-26T16:07:00","date_gmt":"2022-10-26T13:07:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229201"},"modified":"2022-11-09T05:59:18","modified_gmt":"2022-11-09T02:59:18","slug":"wordpress-viestityypit-abstraktio-entiteeteille","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/wordpress-viestityypit-abstraktio-entiteeteille\/","title":{"rendered":"WordPress-viestityypit: abstraktio entiteeteille"},"content":{"rendered":"\n<p>Kun ohjelmoijat puhuvat kokonaisuuksista, he yleens\u00e4 puhuvat konseptista tai jostakin, joka on olemassa j\u00e4rjestelm\u00e4ss\u00e4. Joskus se on luokka, joskus kirjasto tai riippuvuus, tai se voi olla jotain WordPress-viestityyppi\u00e4.<\/p>\n<p>Jos WordPressi\u00e4 on pidett\u00e4v\u00e4 <a href=\"https:\/\/tommcfarlin.com\/web-application-foundation\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sovellusperustana (verrattuna kehykseen)<\/a>, on t\u00e4rke\u00e4\u00e4 ajatella tiettyj\u00e4 ominaisuuksia tavoilla, joita voidaan k\u00e4sitell\u00e4 kokonaisuuksina. Yll\u00e4 olevassa esimerkiss\u00e4 viestityyppi on juuri sellainen.<\/p>\n<p>Kun mukautetut viestityypit otettiin k\u00e4ytt\u00f6\u00f6n, <a href=\"https:\/\/make.wordpress.org\/training\/handbook\/theme-school\/custom-post-types\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">se antoi meille tavan<\/a> tuoda sovellukseen jotain muutakin kuin sivuja ja viestej\u00e4. Nyt voimme toteuttaa mink\u00e4 tahansa konseptin \u2013 kuten <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/tapahtumaviestityyppien-kysely-wp-kyselyllae-ja-tapahtumakalenterilla\/\" title=\"tapahtuman\">tapahtuman<\/a> \u2013 ja k\u00e4sitell\u00e4 sit\u00e4 omana kokonaisuutenaan j\u00e4rjestelm\u00e4ss\u00e4.<\/p>\n<p>Mutta kun kaikki on sanottu ja tehty, se kaikki tallennetaan viestitaulukkoon. Ja se on hienoa, koska ohjelmistokehityksess\u00e4 on kyse abstraktiosta. Kun otamme k\u00e4ytt\u00f6\u00f6n WordPress-viestityyppej\u00e4, toteutamme abstraktin viesti-idean p\u00e4\u00e4lle.<\/p>\n<h2>WordPress-viestityypit<\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/fi\/wordpress-kaeyttaejien-luominen-ohjelmallisesti\/\" title=\"Viimeisess\u00e4 viestiss\u00e4\">Viimeisess\u00e4 viestiss\u00e4<\/a> k\u00e4vin l\u00e4pi sellaisen k\u00e4ytt\u00e4j\u00e4n luomisprosessin, joka lopulta liitet\u00e4\u00e4n johonkin WordPress-sovelluksen kokonaisuuteen.<\/p>\n<ul>\n<li>Ehk\u00e4 h\u00e4n on viestin kirjoittaja,<\/li>\n<li>Ehk\u00e4 h\u00e4n on tuotteen myyj\u00e4,<\/li>\n<li>Ehk\u00e4 h\u00e4n on tarinan kertoja,<\/li>\n<li>Tai mit\u00e4 muuta voit kuvitella.<\/li>\n<\/ul>\n<p>Mahdollisuudet ovat rajattomat. Mutta ennen kuin puhumme yhteyden luomisesta kahden entiteetin \u2013 eli k\u00e4ytt\u00e4j\u00e4n ja WordPress-viestityypin \u2013 v\u00e4lille, meid\u00e4n on puhuttava kokonaisuuden tai mukautetun viestityypin toteuttamisesta ohjelmallisesti.<\/p>\n<p>T\u00e4st\u00e4 on paljon dokumentaatiota, ja t\u00e4st\u00e4 on saatavilla paljon opetusohjelmia, joten en aio k\u00e4sitell\u00e4 asiaa. Sen sijaan yrit\u00e4n pit\u00e4\u00e4 t\u00e4m\u00e4n mahdollisimman paljaana. Muista, ett\u00e4 t\u00e4m\u00e4n koko sarjan tavoitteena on lopulta p\u00e4\u00e4st\u00e4 pisteeseen, jossa yhdist\u00e4mme entiteettej\u00e4 metatietojen avulla.<\/p>\n<p>Mutta ennen kuin teemme sen, meid\u00e4n on luotava kokonaisuudet. Meill\u00e4 on siis k\u00e4ytt\u00e4j\u00e4, joten tehd\u00e4\u00e4n se.<\/p>\n<p>Oletetaan esimerkiksi, ett\u00e4 edellisess\u00e4 viestiss\u00e4 luomamme k\u00e4ytt\u00e4j\u00e4 Meghan on kirjan kirjoittaja. Ja jonkun muun hallinnoimassa WordPress-asennuksessa on mukautettu postaustyyppi kirjoille, joilla jokaisella on muutama attribuutti:<\/p>\n<ul>\n<li>otsikko,<\/li>\n<li>kuvaus,<\/li>\n<li>julkaisup\u00e4iv\u00e4m\u00e4\u00e4r\u00e4,<\/li>\n<li>ISBN,<\/li>\n<li>alkuper\u00e4isten myytyjen kappaleiden m\u00e4\u00e4r\u00e4,<\/li>\n<li>mist\u00e4 sen voi ostaa,<\/li>\n<li>ja niin edelleen.<\/li>\n<\/ul>\n<p>Voit lis\u00e4t\u00e4 toteutukseen enemm\u00e4n tai v\u00e4hemm\u00e4n. Itse asiassa saatat myyd\u00e4 s\u00e4hk\u00f6isi\u00e4 kirjoja, ja kirjan URL-osoite ostettavaksi on yksi ominaisuuksista. Oli miten oli, ymm\u00e4rr\u00e4t idean.<\/p>\n<p>N\u00e4in ollen voimme ottaa k\u00e4ytt\u00f6\u00f6n yksinkertaisen mukautetun viestityypin &quot;kirjoille&quot; ohjelmallisesti.<\/p>\n<h3>Viestityypin k\u00e4ytt\u00f6\u00f6notto<\/h3>\n<p>Ja se n\u00e4ytt\u00e4\u00e4 <a href=\"https:\/\/gist.github.com\/tommcfarlin\/17ab6e5d052da8d471b15cfd70ffa37c\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4lt\u00e4<\/a> :<\/p>\n<pre><code>&lt;?php\n\nadd_action( 'init', 'acme_create_book_post_type' );\n\/**\n * Creates a new custom post type called 'Book' using the smallest number of arguments\n * to prepare the post type.\n *\/\nfunction acme_create_book_post_type() {\n\n    $args = array(\n        'labels' =&gt; array(\n            'name'          =&gt; 'Books',\n            'singular_name' =&gt; 'Book',\n        ),\n        'public' =&gt; true,\n    );\n    register_post_type( 'acme_book', $args );\n}<\/code><\/pre>\n<p>Jos luet <a href=\"https:\/\/codex.wordpress.org\/Post_Types\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">mukautettujen viestityyppien luomista<\/a> koskevat ohjeet, t\u00e4ss\u00e4 ei ole mit\u00e4\u00e4n ep\u00e4normaalia. Sen pit\u00e4isi n\u00e4ytt\u00e4\u00e4 juuri sellaiselta kuin odotit.<\/p>\n<p>Se, miss\u00e4 luot t\u00e4m\u00e4n, riippuu projektisi luonteesta. On monia ihmisi\u00e4, jotka puolustavat sit\u00e4, ett\u00e4 se on laajennuksessa tai ett\u00e4 se tehd\u00e4\u00e4n teemaksi. T\u00e4m\u00e4 ei ole oikea paikka keskustella asiasta. Riitt\u00e4\u00e4, kun sanon, ett\u00e4 tarkoituksiini oletetaan, ett\u00e4 se kaikki on osa samaa laajennusta edellisest\u00e4 opetusohjelmasta.<\/p>\n<p>Lis\u00e4ksi en poikkea mukautetuista taksonomioista, kommenteista tai muista mukautetuista tiedoista, jotka voidaan yhdist\u00e4\u00e4 mukautettuun viestityyppiin.<\/p>\n<p>Sen j\u00e4lkeen katsomme, milt\u00e4 t\u00e4m\u00e4 n\u00e4ytt\u00e4\u00e4 WordPressin hallinta-alueella sek\u00e4 milt\u00e4 t\u00e4m\u00e4 n\u00e4ytt\u00e4\u00e4 tietokannassa.<\/p>\n<h3>Katso verhon taakse<\/h3>\n<p>Ensinn\u00e4kin, t\u00e4lt\u00e4 se n\u00e4ytt\u00e4\u00e4 (tai sen pit\u00e4isi n\u00e4ytt\u00e4\u00e4) WordPressin hallinta-alueella:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167618-61e7a62adc9ed.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-167618-61e7a62adc9ed.png\" alt=\"WordPress-viestityypit: abstraktio entiteeteille\" ><\/a><\/p>\n<p>Ja jos katsot tietokantaa merkinn\u00e4n luomisen j\u00e4lkeen, n\u00e4et jotain t\u00e4llaista:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167618-61e7a6307603a.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-167618-61e7a6307603a.png\" alt=\"WordPress-viestityypit: abstraktio entiteeteille\" ><\/a><\/p>\n<p>Ilmeisesti olen rajoittanut tietokannan k\u00e4ytt\u00f6liittym\u00e4ss\u00e4 palautettuja tietueita suodattamalla tulokset, jotta kuvakaappausta olisi helpompi seurata.<\/p>\n<h2>Kirjoissa<\/h2>\n<p>Ja siin\u00e4 se, todella. Tarkoitan, ett\u00e4 kaikkein perustavimmalla tasolla n\u00e4in luot mukautetun viestityypin WordPressiss\u00e4. Tied\u00e4n, ett\u00e4 se ei ole mit\u00e4\u00e4n uutta, mutta jos voisin esitt\u00e4\u00e4 hieman vahvemman perustelun t\u00e4llaiselle postaukselle, se sis\u00e4lt\u00e4isi seuraavat kaksi kohtaa.<\/p>\n<h4>1 Kyse on abstraktioista<\/h4>\n<p>Jos haluat perehty\u00e4 verkkosovellusten rakentamiseen WordPressin avulla, on t\u00e4rke\u00e4\u00e4 lopettaa asioiden ajatteleminen perinteisill\u00e4 termeill\u00e4, kuten postauksilla, sivuilla, kommenteilla ja luokilla, ja alkaa ajatella niit\u00e4 yleisempin\u00e4 abstraktioina.<\/p>\n<p>Entiteetit, kuten artikkelissa aiemmin mainittiin. Kun teet niin, sinulla on muutos henkisess\u00e4 mallissa, joka ohjaa kyky\u00e4si ajatella ja toteuttaa ratkaisu.<\/p>\n<h4>2 Kyse on ihmissuhteista<\/h4>\n<p>Vaikka ajattelemme usein asioita niiden yksitt\u00e4isiss\u00e4 osissa, kuten julkaisuissa ja sivuissa, tied\u00e4mme luonnostaan, ett\u00e4 viesteiss\u00e4 voi olla kommentteja, kommenteissa voi olla vastauksia, sivuilla voi olla malleja ja niin edelleen.<\/p>\n<p>Kaikkien n\u00e4iden yksitt\u00e4isten asioiden v\u00e4lill\u00e4 on suhteita, jotka ovat osa j\u00e4rjestelm\u00e4\u00e4. Ja kun alat ajatella, ett\u00e4 suhteet ovat jotain, jonka avulla voimme tehd\u00e4 enemm\u00e4n, alat n\u00e4hd\u00e4, kuinka voimakas jokin voi olla. Se on kokonaisuus &quot;kokonaisuus on suurempi kuin osiensa summa&quot;.<\/p>\n<p>Joten kun sinulla on yksitt\u00e4isi\u00e4 kokonaisuuksia paikoillaan ja kun alat n\u00e4hd\u00e4, kuinka ne voivat liitty\u00e4 toisiinsa, otat askeleen eteenp\u00e4in luomalla jotain, joka ratkaisee hieman monimutkaisemman ongelman n\u00e4enn\u00e4isesti yksinkertaisista osista.<\/p>\n<p>Ja sinne l\u00e4hdet\u00e4\u00e4n seuraavaksi.<\/p>\n<h2>Ent\u00e4 metadata?<\/h2>\n<p>T\u00e4m\u00e4n sarjan koko tarkoitus on k\u00e4yd\u00e4 l\u00e4pi, kuinka luoda assosiaatio entiteettien v\u00e4lille, eik\u00f6 niin? Tarkemmin sanottuna pyrimme luomaan yhteyden k\u00e4ytt\u00e4j\u00e4n ja julkaisun tai tarkemmin sanottuna kirjailijan ja kirjan v\u00e4lille.<\/p>\n<p>WordPress tarjoaa perustan t\u00e4lle, ja t\u00e4ss\u00e4 lis\u00e4p\u00f6ytien ja koukkujen voimat voivat tulla esiin. Seuraavassa postauksessa aion puhua siit\u00e4, kuinka t\u00e4m\u00e4 yhteys luodaan, mihin suuntaan yhdistykset voivat menn\u00e4 ja kuinka n\u00e4iden tietojen kanssa ty\u00f6skennell\u00e4, jos esimerkiksi k\u00e4ytt\u00e4j\u00e4 poistetaan sovelluksesta.<\/p>\n<h2>Sarjan postaukset<\/h2>\n<ol>\n<li><a href=\"https:\/\/tommcfarlin.com\/wordpress-metadata-association\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress Metadata Association: Kuinka tehd\u00e4 se<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/fi\/wordpress-kaeyttaejien-luominen-ohjelmallisesti\/\" title=\"WordPress-k\u00e4ytt\u00e4jien luominen ohjelmallisesti\">WordPress-k\u00e4ytt\u00e4jien luominen ohjelmallisesti<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/wordpress-post-types\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress-viestityypit: abstraktio entiteeteille<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/fi\/wordpress-metadatayhdistys-liittyvaet-entiteetit\/\" title=\"WordPress-metadatayhdistys: liittyv\u00e4t entiteetit\">WordPress-metadatayhdistys: liittyv\u00e4t entiteetit<\/a><\/li>\n<\/ol>\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>Kun ohjelmoijat puhuvat kokonaisuuksista, he yleens\u00e4 puhuvat yksitt\u00e4isest\u00e4 j\u00e4rjestelm\u00e4n osasta \u2013 kuten WordPress-viestityypeist\u00e4.<\/p>\n","protected":false},"author":1,"featured_media":221177,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[719,895,917,843,864],"tags":[1166],"class_list":["post-229201","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-muut","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229201","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=229201"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229201\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/221177"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229201"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229201"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}