{"id":229192,"date":"2022-10-26T13:03:00","date_gmt":"2022-10-26T10:03:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229192"},"modified":"2022-11-09T05:59:11","modified_gmt":"2022-11-09T02:59:11","slug":"wordpress-kaeyttaejien-luominen-ohjelmallisesti","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/wordpress-kaeyttaejien-luominen-ohjelmallisesti\/","title":{"rendered":"WordPress-k\u00e4ytt\u00e4jien luominen ohjelmallisesti"},"content":{"rendered":"\n<p>T\u00e4m\u00e4 viesti on toinen osa k\u00e4sittelem\u00e4ss\u00e4ni sarjassa, jossa puhutaan WordPress <a href=\"https:\/\/tommcfarlin.com\/tag\/metadata-association\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Metadata Associationista<\/a>, ja ensimm\u00e4inen osa sis\u00e4lt\u00e4\u00e4 WordPress-k\u00e4ytt\u00e4jien <a href=\"https:\/\/tommcfarlin.com\/create-a-user-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ohjelmallisen<\/a> luomisen (mutta siit\u00e4 on jo viisi vuotta!).<\/p>\n<p>Olen puhunut t\u00e4m\u00e4n tekemisest\u00e4 aiemmin, mutta asiat muuttuvat ajan my\u00f6t\u00e4, kun saamme lis\u00e4\u00e4 kokemusta, eik\u00f6 niin? Ja ty\u00f6skennelless\u00e4ni t\u00e4m\u00e4nkaltaisen sarjan l\u00e4pi, mielest\u00e4ni on hy\u00f6dyllist\u00e4, ett\u00e4 meill\u00e4 on joukko vaatimuksia, joita voimme noudattaa, ainakin simuloidaksemme, millaista t\u00e4m\u00e4 voisi tapahtua todellisessa projektissa.<\/p>\n<p>Joten t\u00e4ss\u00e4 nimenomaisessa viestiss\u00e4 tarkastelemme seuraavaa:<\/p>\n<ol>\n<li>vastaanottaa k\u00e4ytt\u00e4j\u00e4tietoja tietyss\u00e4 tietomuodossa,<\/li>\n<li>tunnistaa, mit\u00e4 tietoja tarvitaan k\u00e4ytt\u00e4j\u00e4n luomiseen,<\/li>\n<li>K\u00e4ytt\u00e4j\u00e4n luominen,<\/li>\n<li>Varmistamme, ett\u00e4 koodimme vastaa koodausstandardeja ja luettavuutta.<\/li>\n<\/ol>\n<p>Kuulostaa paljon, vaikka minulla ei ole aikomustakaan tehd\u00e4 t\u00e4st\u00e4 pitk\u00e4\u00e4 postausta. Jos t\u00e4m\u00e4 on jotain, jonka haluat oppia ajattelemaan tai k\u00e4sittelem\u00e4\u00e4n sit\u00e4, niin t\u00e4ss\u00e4 menn\u00e4\u00e4n.<\/p>\n<h2>WordPress-k\u00e4ytt\u00e4jien luominen<\/h2>\n<p>Oletetaan, ett\u00e4 joku \u2013 ehk\u00e4 asiakas tai ehk\u00e4 jopa vain sin\u00e4 \u2013 tietona, jota k\u00e4ytet\u00e4\u00e4n k\u00e4ytt\u00e4j\u00e4n luomiseen. Se vaatii ainakin seuraavat tiedot:<\/p>\n<ol>\n<li>k\u00e4ytt\u00e4j\u00e4tunnus,<\/li>\n<li>salasana,<\/li>\n<li>s\u00e4hk\u00f6postiosoite.<\/li>\n<\/ol>\n<p>Mit\u00e4 tulee k\u00e4ytt\u00e4j\u00e4tunnuksen luomiseen, suosittelen my\u00f6s s\u00e4hk\u00f6postiosoitteen k\u00e4ytt\u00f6\u00e4 k\u00e4ytt\u00e4j\u00e4tunnuksena, koska se on taatusti ainutlaatuinen melkein kaikille tilin k\u00e4ytt\u00e4jille.<\/p>\n<p>Joten t\u00e4ss\u00e4 opetusohjelmassa aion k\u00e4ytt\u00e4\u00e4 juuri sit\u00e4. Mit\u00e4 tulee salasanaan, puhun salasanan luomisesta hetkellisesti.<\/p>\n<p>Lopuksi voit olettaa, ett\u00e4 tietosi tulee miss\u00e4 tahansa muodossa: ehk\u00e4 se on JSON-muodossa, ehk\u00e4 CSV-muodossa, ehk\u00e4 se on XML-muodossa. Joka tapauksessa on sinun teht\u00e4v\u00e4si j\u00e4sent\u00e4\u00e4 n\u00e4m\u00e4 tiedot PHP:hen, jotta voit helposti k\u00e4sitell\u00e4 tietoja.<\/p>\n<p>Jotta asiat olisivat yksinkertaisia \u200b\u200bt\u00e4ss\u00e4 viestiss\u00e4, oletan, ett\u00e4 meill\u00e4 on yksi tietue ja meill\u00e4 on tiedot saatavilla taulukossa. T\u00e4m\u00e4 ei tarkoita, ett\u00e4 se alkaa taulukossa, mutta se tarkoittaa, ett\u00e4 sijoitamme sen lopulta taulukkoon.<\/p>\n<h3>1 K\u00e4ytt\u00e4j\u00e4n tiedot<\/h3>\n<p>Oletetaan, ett\u00e4 meill\u00e4 on henkil\u00f6 nimelt\u00e4 &quot;Meghan&quot;, jonka aiomme lis\u00e4t\u00e4 j\u00e4rjestelm\u00e4\u00e4n. Meill\u00e4 on s\u00e4hk\u00f6postiosoite, ja siin\u00e4 kaikki.<\/p>\n<p>Esimerkkipersoona (taiteilijan esitys tietysti \ud83d\ude42<\/p>\n<p>Mutta ei se mit\u00e4\u00e4n. Se on meid\u00e4n tarvitsemamme runko. Otetaan siis <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-00-user-information-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">n\u00e4m\u00e4 tiedot<\/a> :<\/p>\n<pre><code>&lt;?php\n\n$user_info = array(\n  'email'      =&gt; 'meghan@emaildomain.com',\n  'first_name' =&gt; 'Meghan',\n  'last_name'  =&gt; 'McFarlin',\n);\n<\/code><\/pre>\n<p>Ja tee siit\u00e4 jotain, jota voimme k\u00e4ytt\u00e4\u00e4 tilin luomiseen.<\/p>\n<h3>2 Tilin luominen<\/h3>\n<p>Ensimm\u00e4inen asia, joka meid\u00e4n on teht\u00e4v\u00e4, on varmistaa, ettei t\u00e4lle s\u00e4hk\u00f6postiosoitteelle ole jo olemassa k\u00e4ytt\u00e4j\u00e4\u00e4. Jos on, palaamme takaisin. Saatat haluta n\u00e4ytt\u00e4\u00e4 <a href=\"https:\/\/code.tutsplus.com\/series\/creating-a-custom-wordpress-messaging-system--cms-1105\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">asetusviestin<\/a> tai muun tyyppisen tiedon ilmoittaaksesi loppuk\u00e4ytt\u00e4j\u00e4lle, ett\u00e4 et luo t\u00e4t\u00e4 tili\u00e4, koska se on jo olemassa.<\/p>\n<p>Mutta se ei kuulu t\u00e4m\u00e4n postauksen piiriin.<\/p>\n<p>Sen sijaan <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-01-user-already-exists-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">palaamme<\/a> :<\/p>\n<pre><code>&lt;?php\n\n\/\/ Read the email address - if it's - invalid or the user exists, then return.\n$email = $user_info['email'];\nif (! filter_var( $email, FILTER_VALIDATE_EMAIL) || username_exists( $email)) {\n  return;\n}\n<\/code><\/pre>\n<p>Oletetaan sitten, ett\u00e4 k\u00e4ytt\u00e4j\u00e4\u00e4 ei ole olemassa. Jos h\u00e4n ei tee \u2013 mit\u00e4 h\u00e4nen ei pit\u00e4isi (muuten ei ole syyt\u00e4 t\u00e4lle postaukselle \ud83d\ude0f) \u2013 niin sitten luomme h\u00e4nelle tilin.<\/p>\n<p>T\u00e4t\u00e4 varten tarvitsemme h\u00e4nen s\u00e4hk\u00f6postiosoitteensa ja salasanansa. Onneksi <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-02-setting-a-password-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">salasanan luominen<\/a> on helppoa:<\/p>\n<pre><code>&lt;?php\n\n$password = wp_generate_password( 16, false );\n<\/code><\/pre>\n<p>Joten nyt voimme ottaa s\u00e4hk\u00f6postiosoitteen ja salasanan ja <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-03-creating-the-user-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">luoda k\u00e4ytt\u00e4j\u00e4tilin<\/a>.<\/p>\n<pre><code>&lt;?php\n\n\/\/ Grab the email and create a password.\n$email    = $user_info['email'];\n$password = wp_generate_password( 12, false );\n\n\/\/ Create the user and set her role.\n$user_id = wp_create_user( $email, $password, $email );\n\n\/\/ Set the user's role (and remove the previous role).\n$user = new WP_User( $user_id );\n$user-&gt;set_role( 'author' );\n<\/code><\/pre>\n<p>Huomaa yll\u00e4 olevassa koodissa, ett\u00e4 asetamme my\u00f6s roolin. Tapa tehd\u00e4 t\u00e4m\u00e4 on ensin tarttua <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_user\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_User<\/a> -esiintym\u00e4\u00e4n ja sitten $user_id:ll\u00e4 ja m\u00e4\u00e4ritt\u00e4\u00e4 sitten <a href=\"https:\/\/codex.wordpress.org\/Roles_and_Capabilities\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">rooli<\/a>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167649-61e7a6824dc60.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-167649-61e7a6824dc60.png\" alt=\"WordPress-k\u00e4ytt\u00e4jien luominen ohjelmallisesti\" ><\/a><\/p>\n<p>P\u00e4\u00e4t\u00e4n k\u00e4ytt\u00e4\u00e4 <strong>tekij\u00e4\u00e4<\/strong>, mutta on joukko muita, joista voit valita (tai k\u00e4ytt\u00e4\u00e4 mit\u00e4 tahansa tietorakenteessa).<\/p>\n<h4>3 Eik\u00f6 siin\u00e4 ole muutakin?<\/h4>\n<p>Ja sen avulla k\u00e4ytt\u00e4j\u00e4si pit\u00e4isi luoda. Osa t\u00e4st\u00e4 riippuu pitk\u00e4lti k\u00e4ytt\u00e4m\u00e4st\u00e4si koukusta, siit\u00e4, kuinka olet ottanut t\u00e4m\u00e4n k\u00e4ytt\u00f6\u00f6n prosessissasi ja tavasta, jolla annat j\u00e4rjestelm\u00e4nvalvojan luoda tilej\u00e4.<\/p>\n<p>T\u00e4m\u00e4 on edistyneempi aihe, jonka haluaisin lopulta k\u00e4sitell\u00e4 seuraavassa postauksessa. Pit\u00e4\u00e4kseni t\u00e4m\u00e4n sarjan mahdollisimman suorana ja laihaa, yrit\u00e4n pysy\u00e4 mahdollisimman keskittyneen\u00e4 vaadittaviin ydinvaiheisiin.<\/p>\n<p>Kaikki muu voidaan toteuttaa tai pukea sen ymp\u00e4rille, mit\u00e4 muuta tarvitaan projektin vaatimusten mukaisesti.<\/p>\n<h2>Se on vain tilin luomista<\/h2>\n<p>T\u00e4m\u00e4 on kuitenkin vain WordPress-k\u00e4ytt\u00e4jien ohjelmallisen luomisen k\u00e4sittely\u00e4. Itse asiassa t\u00e4m\u00e4 on vain yhden k\u00e4ytt\u00e4j\u00e4n luominen.<\/p>\n<p>Jos haluat luoda useita k\u00e4ytt\u00e4ji\u00e4, oleta, ett\u00e4 sinulla on useita tietotaulukoita, joiden kautta voit toistaa ja luoda k\u00e4ytt\u00e4j\u00e4t. K\u00e4ytt\u00f6\u00f6notto on sama, vaikka se vaihtelee tilikohtaisesti.<\/p>\n<p>T\u00e4m\u00e4n j\u00e4lkeen aion huomenna luoda ohjelmallisesti viestisis\u00e4lt\u00f6\u00e4 ohjelmallisesti. Ja sen j\u00e4lkeen puhumme tietyn k\u00e4ytt\u00e4j\u00e4n liitt\u00e4misest\u00e4 annettuun viestisis\u00e4lt\u00f6\u00f6n ja siit\u00e4, mit\u00e4 voimme tehd\u00e4 sill\u00e4 (sek\u00e4 miksi t\u00e4ll\u00e4 olisi merkityst\u00e4).<\/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:\/\/tommcfarlin.com\/creating-wordpress-users\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">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:\/\/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>T\u00e4m\u00e4 on kuitenkin vain WordPress-k\u00e4ytt\u00e4jien ohjelmallisen luomisen k\u00e4sittely\u00e4. Itse asiassa t\u00e4m\u00e4 on vain yhden k\u00e4ytt\u00e4j\u00e4n luominen.<\/p>\n","protected":false},"author":1,"featured_media":220605,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[719,895,917,864],"tags":[1166],"class_list":["post-229192","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-muut","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229192","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=229192"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229192\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/220605"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229192"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229192"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}