{"id":229211,"date":"2022-10-27T10:07:00","date_gmt":"2022-10-27T07:07:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229211"},"modified":"2022-11-09T05:59:05","modified_gmt":"2022-11-09T02:59:05","slug":"wordpress-metadatayhdistys-liittyvaet-entiteetit","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/wordpress-metadatayhdistys-liittyvaet-entiteetit\/","title":{"rendered":"WordPress-metadatayhdistys: liittyv\u00e4t entiteetit"},"content":{"rendered":"\n<p>T\u00e4ss\u00e4 vaiheessa olemme k\u00e4sitelleet, kuinka kokonaisuudet luodaan laajennuksen sis\u00e4ll\u00e4 (joka, kuten olemme sanoneet, on vain hieno sana toiselle konkreettiselle idealle). Meill\u00e4 on nimitt\u00e4in k\u00e4ytt\u00e4j\u00e4 ja mukautettu viestityyppi tai kirja. Ja t\u00e4ss\u00e4 alamme ottaa kaksi erillist\u00e4 kokonaisuutta ja yhdist\u00e4\u00e4 ja ty\u00f6skennell\u00e4 sen kanssa, jota kutsumme WordPress-metatietoyhdistykseksi.<\/p>\n<p>Mutta ennen kuin teet niin, on t\u00e4rke\u00e4\u00e4 ymm\u00e4rt\u00e4\u00e4 kahdentyyppiset metatiedot, joiden kanssa ty\u00f6skentelemme, ja kaksi tapaa (tai kolme tapaa, riippuen siit\u00e4, miten katsot sit\u00e4), kuinka voimme yhdist\u00e4\u00e4 metatiedot.<\/p>\n<p>Kuten muissakin sarjan postauksissa, t\u00e4m\u00e4n ei ole tarkoitus sukeltaa syv\u00e4llisesti kunkin taulukon ymm\u00e4rt\u00e4miseen tai syv\u00e4llist\u00e4 sukellusta kuhunkin API-toimintoon. Sen sijaan kartoitamme, mit\u00e4 on saatavilla, k\u00e4yt\u00e4mme niit\u00e4 ja j\u00e4t\u00e4mme tarkempia tietoja tuleviin postauksiin (tai ehk\u00e4 keskusteluihin kommentteihin).<\/p>\n<h2>WordPressin metatietoyhdistys<\/h2>\n<p>Metadata ei ole yksinomaan WordPressiss\u00e4. Tied\u00e4t varmaan t\u00e4m\u00e4n. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Metadata\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ja se m\u00e4\u00e4ritell\u00e4\u00e4n usein seuraavasti<\/a> :<\/p>\n<blockquote>\n<p>Tietoja tiedoista tai tietoja tiedoista.<\/p>\n<\/blockquote>\n<p>Ja se on hyv\u00e4 tapa ilmaista se. WordPress tarjoaa joitain erilaisia \u200b\u200btietokantataulukoita, joiden avulla voimme tarjota tietoja tietyntyyppisist\u00e4 WordPressin kokonaisuuksista. Aiomme k\u00e4ytt\u00e4\u00e4 paria n\u00e4ist\u00e4 my\u00f6hemmin t\u00e4ss\u00e4 viestiss\u00e4, mutta riitt\u00e4\u00e4, kun sanon, ett\u00e4 <a href=\"https:\/\/codex.wordpress.org\/Database_Description\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress tarjoaa<\/a> :<\/p>\n<ul>\n<li>kommentin metatiedot,<\/li>\n<li>l\u00e4het\u00e4 metatiedot,<\/li>\n<li>termin metatiedot,<\/li>\n<li>ja k\u00e4ytt\u00e4j\u00e4n metatiedot<\/li>\n<\/ul>\n<p>Ja kaikki t\u00e4m\u00e4 on saatavilla suoraan pakkauksesta.<\/p>\n<p>Yksi WordPressin metatietotaulukoista.<\/p>\n<p>Jokaisen n\u00e4iden sovellusliittym\u00e4t ovat johdonmukaisia, mik\u00e4 on my\u00f6s mukavaa. Mutta j\u00e4lleen kerran, k\u00e4sittelemme vain muutamaa n\u00e4ist\u00e4 t\u00e4m\u00e4n postauksen loppuosan ajan.<\/p>\n<h3>1 Metatietotaulukot<\/h3>\n<p>Esimerkiss\u00e4mme k\u00e4yt\u00e4mme toista tai molempia seuraavista kahdesta taulukosta:<\/p>\n<ol>\n<li><a href=\"https:\/\/codex.wordpress.org\/Database_Description#Table:_wp_postmeta\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_postmeta<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Database_Description#Table:_wp_usermeta\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_usermeta<\/a><\/li>\n<\/ol>\n<p>My\u00f6nnett\u00e4k\u00f6\u00f6n, ett\u00e4 asennuksessasi niill\u00e4 voi olla eri etuliite, mutta p\u00e4\u00e4te on sama, ja ymm\u00e4rr\u00e4t idean.<\/p>\n<p>Toiseksi k\u00e4yt\u00e4mme niihin liittyvi\u00e4 API-toimintoja metatietojemme yhdist\u00e4miseen. Tarkastelemme n\u00e4it\u00e4 koodissa, kun yhdist\u00e4mme tietoja k\u00e4ytt\u00e4j\u00e4mme ja mukautetun viestityypin (tai kirjailijamme ja kirjojen, jos haluat k\u00e4ytt\u00e4\u00e4 tarkempaa terminologiaa) v\u00e4lill\u00e4.<\/p>\n<p>Okei sitten. T\u00e4m\u00e4 koko postauksen ensimm\u00e4inen osa luo vain pohjaa sille, mit\u00e4 taustalla olevan WordPress-infrastruktuurin osia aiomme k\u00e4ytt\u00e4\u00e4. Kun kaikki t\u00e4m\u00e4 on sanottu, katsotaanpa, kuinka voimme ohjelmallisesti muuttaa t\u00e4m\u00e4n asian joksikin hy\u00f6dyllisemm\u00e4ksi.<\/p>\n<h3>2 Metatietojen yhdist\u00e4minen<\/h3>\n<p>WordPressin metatietoyhdistyksen idea kuulostaa monimutkaisemmalta kuin se on. Ajattele asiaa n\u00e4in:<\/p>\n<ul>\n<li>Kun otetaan huomioon kaksi taulukkoa, kuinka voimme jakaa tietoja kahden entiteetin v\u00e4lill\u00e4, jotka antavat toisen tiet\u00e4\u00e4 toisesta?<\/li>\n<\/ul>\n<p>Esimerkiksi, kuinka voimme kertoa k\u00e4ytt\u00e4j\u00e4n metatiedoista julkaisujen metatiedoista, kun on kyse k\u00e4ytt\u00e4j\u00e4st\u00e4. Tai miten voimme antaa postin metatiedon tiet\u00e4\u00e4 mit\u00e4\u00e4n asiaan liittyvist\u00e4 k\u00e4ytt\u00e4jien metatiedoista?<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167597-61e7a5d09f770.jpg\" 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-167597-61e7a5d09f770.jpg\" alt=\"WordPress-metadatayhdistys: liittyv\u00e4t entiteetit\" ><\/a><\/p>\n<p>Korkealla tasolla todellakin teemme t\u00e4t\u00e4: Annamme yhdelle entiteetille toisen olemassaolon ja suhteutamme sen toiseen. Tai se voi menn\u00e4 toisinkin p\u00e4in. Toteutuksestasi riippuen toinen voi olla hy\u00f6dyllisempi kuin toinen.<\/p>\n<h4>1 Yksisuuntainen<\/h4>\n<p>Kun puhumme yksisuuntaisten WordPress-assosiaatioiden luomisesta, puhumme yleens\u00e4 ajatuksesta, ett\u00e4 vain yksi entiteetti on tietoinen toisesta. T\u00e4m\u00e4 tarkoittaa, ett\u00e4 k\u00e4ytt\u00e4j\u00e4 voi olla tietoinen vain viestist\u00e4.<\/p>\n<p>Voisimme m\u00e4\u00e4ritt\u00e4\u00e4 sen j\u00e4lkeen, kun viesti on luotu, kuten kyseinen k\u00e4ytt\u00e4j\u00e4 on tietoinen <a href=\"https:\/\/gist.github.com\/tommcfarlin\/c1245410fdf288edd11c9547711dd76c#file-01-post-aware-of-user-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">juuri luodusta<\/a> viestist\u00e4 :<\/p>\n<pre><code>&lt;?php\n\n\/\/ Using post title as the value, but it's just an example.\nadd_user_meta( $user_id, $post_id, $post_title );<\/code><\/pre>\n<p>Tai ehk\u00e4 se tarkoittaa, ett\u00e4 viesti on tietoinen k\u00e4ytt\u00e4j\u00e4st\u00e4:<\/p>\n<pre><code>&lt;?php\n\n\/\/ User user email address a value but just an example.\nadd_post_meta( $post_id, $user_id, $email_address );<\/code><\/pre>\n<p>Mutta katsoipa sit\u00e4 miten tahansa, yhdistys kulkee vain yhteen suuntaan.<\/p>\n<p>Ja vaikka suhde menee yhteen suuntaan, sen ei tarvitse olla niin. Eli molemmat olennot voivat olla tietoisia toisistaan.<\/p>\n<h4>2 Kaksisuuntainen<\/h4>\n<p>Koska metatietosovellusliittymien kanssa on niin helppoa ja johdonmukaista ty\u00f6skennell\u00e4, niiden kanssa ty\u00f6skentely ei ole vaikeaa. Jokainen niist\u00e4 vaatii yleens\u00e4 v\u00e4hint\u00e4\u00e4n kaksi seuraavista:<\/p>\n<ol>\n<li>sen tyyppinen tunnus, johon metatiedot liittyv\u00e4t,<\/li>\n<li>meta-avain, jota voidaan k\u00e4ytt\u00e4\u00e4 tietojen etsimiseen,<\/li>\n<li>arvo, joka tallentaa tunnukseen ja viestiin liittyv\u00e4t tiedot.<\/li>\n<\/ol>\n<p>Kuten olemme n\u00e4hneet, valitsemasi tunnuksen ja avaimen valinta riippuu usein toteutuksestasi.<\/p>\n<p>T\u00e4h\u00e4n asti olemme pohtineet, kuinka luoda yksisuuntainen yhdistys. Kaksisuuntainen assosiaatio ei ole mik\u00e4\u00e4n erilainen. Sen sijaan, ett\u00e4 teemme yhden kokonaisuuden tietoiseksi toisesta, teemme molemmat oliot tietoisiksi toisesta:<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Using this association will give you the ability to query for information \n * both on posts and users and then work with the data accordingly.\n *\/\nadd_user_meta( $user_id, $post_id, $post_title );\nadd_post_meta( $post_id, $user_id, $email_address );\n<\/code><\/pre>\n<p>Mutta t\u00e4m\u00e4 ei ole p\u00e4\u00e4t\u00f6s, joka pit\u00e4isi tehd\u00e4 vain sen vuoksi. Sen sijaan kannattaa pohtia joitakin syit\u00e4, miksi saatat haluta valita jommankumman.<\/p>\n<h3>Ongelman l\u00e4pi ajattelu<\/h3>\n<p>Kun on kyse t\u00e4llaisten ongelmien ratkaisemisesta, ei ole olemassa lopullista ratkaisua termill\u00e4 &quot;sinun pit\u00e4isi olla lopullinen [t\u00e4m\u00e4 tapa]&quot;, olipa se mik\u00e4 tahansa tapa. Sen sijaan sinun on kysytt\u00e4v\u00e4 itselt\u00e4si kysymyksi\u00e4, kuten &quot;mik\u00e4 tekee siit\u00e4 helpoin tapa hallita n\u00e4it\u00e4 tietoja?&quot;<\/p>\n<p>Jos esimerkiksi olet ensisijaisesti kiinnostunut k\u00e4ytt\u00e4jien hallinnasta, tarvitset ehk\u00e4 vain, ett\u00e4 k\u00e4ytt\u00e4j\u00e4n metatiedot ovat tietoisia siit\u00e4, mihin entiteeteihin ne liittyv\u00e4t. N\u00e4in varmistat, ett\u00e4 kun k\u00e4ytt\u00e4j\u00e4 poistetaan, etsit\u00e4\u00e4n my\u00f6s siihen liittyv\u00e4t entiteetit k\u00e4ytt\u00e4j\u00e4n metatietotaulukon kautta ja poistetaan my\u00f6s ne.<\/p>\n<p>Samoin ehk\u00e4 sama toiminnallisuus toimisi molempiin suuntiin. Eli aivan kuten haluat varmistaa, ett\u00e4 kun k\u00e4ytt\u00e4j\u00e4 poistetaan, my\u00f6s h\u00e4nen viestins\u00e4 poistetaan, saatat haluta my\u00f6s k\u00e4ytt\u00e4j\u00e4n poistettavan (tai muokattavan) aina, kun jokin h\u00e4nen julkaisuistaan \u200b\u200bpoistetaan. Ja jos n\u00e4in on, kaksisuuntainen assosiaatio mahdollistaa sen.<\/p>\n<p>Koska sinulla on tietyn viestin tunnus ja tietyn k\u00e4ytt\u00e4j\u00e4n tunnus sek\u00e4 m\u00e4\u00e4ritt\u00e4m\u00e4si metaavaimet, l\u00e4hes mink\u00e4 tahansa tyyppinen kysely, jonka voit kuvata joko WordPressin metadata API:n tai <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/WP_Query\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_Queryn<\/a> tai jopa <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/WP_User_Query\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_User_Queryn<\/a> kautta, on mahdollista. .<\/p>\n<h2>Loppu<\/h2>\n<p>Viime k\u00e4dess\u00e4 toivon, ett\u00e4 t\u00e4m\u00e4 sarja on tarjonnut jonkinlaisen k\u00e4sityksen siit\u00e4, kuinka WordPress-metatietoyhdistelmi\u00e4 luodaan, mutta my\u00f6s kuinka abstraktisti ajatellaan WordPressin k\u00e4sitteit\u00e4, koska se liittyy korkeamman tason toteutusten luomiseen laajennuksissasi ja verkkosovelluksissasi.<\/p>\n<p>Niille, jotka ovat kiinnostuneita, harkitsen t\u00e4m\u00e4n sarjan julkaisemista pienen\u00e4 resurssina PDF-muodossa yhdess\u00e4 toimivan laajennuksen kanssa tutkittavaksi. Jos olet kiinnostunut t\u00e4st\u00e4, liity postituslistalle t\u00e4\u00e4ll\u00e4, niin ilmoitan sinulle, kun se on valmis. Muussa tapauksessa k\u00e4yt\u00e4 sarjan tietoja siirty\u00e4ksesi eteenp\u00e4in ja luodaksesi jotain arvokasta<\/p>\n<h3>Haluta lis\u00e4\u00e4?<\/h3>\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:\/\/wordpress.mediadoma.com\/fi\/wordpress-viestityypit-abstraktio-entiteeteille\/\" title=\"WordPress-viestityypit: abstraktio entiteeteille\">WordPress-viestityypit: abstraktio entiteeteille<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/wordpress-metadata-association-entities\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">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>T\u00e4ss\u00e4 alamme ottaa kaksi erillist\u00e4 kokonaisuutta ja yhdist\u00e4\u00e4 ja ty\u00f6skennell\u00e4 sen kanssa, jota kutsumme WordPress-metatietoyhdistykseksi.<\/p>\n","protected":false},"author":1,"featured_media":220451,"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-229211","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\/229211","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=229211"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229211\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/220451"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229211"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229211"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229211"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}