{"id":229938,"date":"2022-11-14T13:50:00","date_gmt":"2022-11-14T10:50:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229938"},"modified":"2022-11-14T13:53:14","modified_gmt":"2022-11-14T10:53:14","slug":"hanki-kaeyttaejaeosoitteita-wordpressissae-osa-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/hanki-kaeyttaejaeosoitteita-wordpressissae-osa-2\/","title":{"rendered":"Hanki k\u00e4ytt\u00e4j\u00e4osoitteita WordPressiss\u00e4, osa 2"},"content":{"rendered":"\n<p>Edellisess\u00e4 <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/hanki-kaeyttaejaeosoitteita-wordpressissae-osa-1\/\" title=\"viestiss\u00e4\">viestiss\u00e4<\/a> aloin jakaa k\u00e4ytt\u00e4jien s\u00e4hk\u00f6postiosoitteiden lataamisen JSON:n kautta WordPressiss\u00e4 (Ajaxia k\u00e4ytt\u00e4m\u00e4ll\u00e4). Ensimm\u00e4inen artikkeli k\u00e4sitteli:<\/p>\n<ol>\n<li>JavaScriptin rekister\u00f6iminen t\u00e4t\u00e4 varten<\/li>\n<li>saada k\u00e4ytt\u00e4jien s\u00e4hk\u00f6postiosoitteet,<\/li>\n<li>ja j\u00e4sent\u00e4\u00e4 tulokset.<\/li>\n<\/ol>\n<p>Tekemist\u00e4 on kuitenkin enemm\u00e4n. Nimitt\u00e4in:<\/p>\n<ol>\n<li>muuntaa palautetut tiedot JSON-muotoon,<\/li>\n<li>tiedoston kirjoittaminen levylle,<\/li>\n<li>ja kuinka sitoa loput yhteen JavaScriptin avulla.<\/li>\n<\/ol>\n<p>Ja sit\u00e4 t\u00e4m\u00e4n postauksen loppuosa k\u00e4sittelee. Joten jos et ole lukenut <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/hanki-kaeyttaejaeosoitteita-wordpressissae-osa-1\/\" title=\"edellist\u00e4 artikkelia\">edellist\u00e4 artikkelia<\/a>, suosittelen sit\u00e4 jos ei mist\u00e4\u00e4n muusta syyst\u00e4 kuin vilkaista koodia n\u00e4hd\u00e4ksesi sen t\u00e4h\u00e4n menness\u00e4.<\/p>\n<h2>K\u00e4ytt\u00e4jien s\u00e4hk\u00f6postiosoitteet JSONin kautta, jatkuu<\/h2>\n<p>Sen lis\u00e4ksi, ett\u00e4 on olemassa muita tapoja k\u00e4sitell\u00e4 t\u00e4t\u00e4 samaa prosessia (joitakin tehokkaampia k\u00e4ytt\u00e4jien lukum\u00e4\u00e4r\u00e4st\u00e4 riippuen), huomaa, ett\u00e4 k\u00e4yt\u00e4n <a href=\"https:\/\/jquery.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jQuery\u00e4<\/a> (eik\u00e4 vanilla JavaScripti\u00e4) t\u00e4h\u00e4n. Jotkut ihmiset eiv\u00e4t ole t\u00e4m\u00e4n tekemisen faneja, ja se on siisti\u00e4, mutta minulla ei ole esimerkkej\u00e4 t\u00e4st\u00e4 viestist\u00e4.<\/p>\n<p>Valitsen n\u00e4m\u00e4 esimerkit, koska jQuery toimitetaan WordPressin mukana, monet WordPress-kehitt\u00e4j\u00e4t k\u00e4ytt\u00e4v\u00e4t sit\u00e4, se sopii t\u00e4h\u00e4n tilanteeseen ja pid\u00e4n siit\u00e4 [edelleen]. \ud83d\ude42<\/p>\n<p>T\u00e4m\u00e4n sanottuani jatkan siit\u00e4 mihin j\u00e4in.<\/p>\n<h3>1 Muunna taulukko JSON-muotoon<\/h3>\n<p>Jos olet perehtynyt PHP:hen, t\u00e4m\u00e4 on helppo tehd\u00e4; mutta jos ei, se ei ole iso juttu. Tarkista ensin PHP-oppaan <a href=\"https:\/\/php.net\/manual\/en\/function.json-encode.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">json_encode .<\/a> Huomaa, ett\u00e4 se ottaa taulukon ja palauttaa sen muotoiltuna merkkijonona.<\/p>\n<p>T\u00e4t\u00e4 k\u00e4yt\u00e4n muuntamaan s\u00e4hk\u00f6postiosoitteet JSON-jonoksi, joka lopulta kirjoitetaan levylle. Se on yksi koodirivi.<\/p>\n<pre><code>json_encode($user_results);<\/code><\/pre>\n<p>Muista kuitenkin, ett\u00e4 on toiminto, joka tuottaa k\u00e4ytt\u00e4j\u00e4tuloksia tarpeen mukaan. Nimenomaan kutsuin funktiota <strong>getUserInfo<\/strong> ja jaan sen hetken.<\/p>\n<p>Koska aiomme l\u00e4hett\u00e4\u00e4 tiedoston k\u00e4ytt\u00e4j\u00e4lle, tiedot on kirjoitettava levylle.<\/p>\n<h3>2 Kirjoita se levylle<\/h3>\n<p>T\u00e4ss\u00e4 vaiheessa on aika kirjoittaa tulokset levylle. Palvelimesi k\u00e4ytt\u00f6oikeuksista riippuen voit ehk\u00e4 kirjoittaa tiedoston levylle suoraan laajennuksen hakemistoon. muuten saatat joutua k\u00e4ytt\u00e4m\u00e4\u00e4n <strong>lataushakemistoa<\/strong>.<\/p>\n<p>Olettaen, ett\u00e4 k\u00e4yt\u00e4t edellist\u00e4, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13576030a7f1f2f62580935c655421b1#file-06-write-json-to-disk-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">koko toiminto<\/a> n\u00e4ytt\u00e4\u00e4 t\u00e4lt\u00e4:<\/p>\n<pre><code>&lt;?php\n\nprivate function writeAddressesToDisk($addresses)\n{\n    $path = plugin_dir_path(__FILE__). 'results.json';\n    if (!file_exists($path)) {\n        touch($path);\n    }\n\n    $handle = fopen($path, 'w');\n    fwrite($handle, json_encode($addresses));\n    fclose($handle);\n}\n<\/code><\/pre>\n<p>Ensin se tarkistaa, onko <strong>results.json<\/strong> olemassa. Jos ei, se luo tyhj\u00e4n tiedoston. Sen j\u00e4lkeen se avaa tiedoston kirjoittamista varten, pudottaa JSON-muodossa olevan taulukon sis\u00e4ll\u00f6n tiedostoon ja sulkee sitten resurssin.<\/p>\n<p>Nyt tiedosto on levyll\u00e4, joten on aika l\u00e4hett\u00e4\u00e4 se k\u00e4ytt\u00e4j\u00e4lle JavaScriptin avulla.<\/p>\n<h3>3 L\u00e4het\u00e4 se k\u00e4ytt\u00e4j\u00e4lle<\/h3>\n<p>Ensin\u00a0 palataan edellisen viestin JavaScript-toimintoon <strong>_getEmailAddresses\u00a0 .<\/strong> N\u00e4et t\u00e4h\u00e4n menness\u00e4 tehdyn ty\u00f6n <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13576030a7f1f2f62580935c655421b1#file-03-get-email-addresses-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4st\u00e4 sis\u00e4ll\u00f6st\u00e4<\/a>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165737-61e787fe98980.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-165737-61e787fe98980.png\" alt=\"Hanki k\u00e4ytt\u00e4j\u00e4osoitteita WordPressiss\u00e4, osa 2\"><\/a><\/p>\n<p>Huomaa, ett\u00e4 ensimm\u00e4inen asia on kutsua palvelinpuolen toimintoa, jonka olen valinnut kutsuvan <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13576030a7f1f2f62580935c655421b1#file-07-get-email-addresses-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">getEmailAddresses<\/a>. Huomaa, ett\u00e4 se suorittaa kyselyn, luo taulukon, kirjoittaa tiedoston levylle ja <strong>kaiuttaa<em><\/em><\/strong> tiedostonimen <strong>JavaScript-funktiolle (koska WordPress vaatii kaiun sijaan<\/strong> returnin<em><\/em> Ajax-kutsuille):<\/p>\n<pre><code>&lt;?php\n\npublic function getEmailAddresses()\n{\n    $this-&gt;writeAddressesToDisk(\n        $this-&gt;getUserInfo(\n            $this-&gt;getUserResults()) );\n\n    echo plugin_dir_url(__FILE__). 'results.json';\n    die;\n}\n<\/code><\/pre>\n<p>Huomaa, ett\u00e4 kyseess\u00e4 on kolme funktiokutsua, joista jokainen ottaa toisen tulokset parametreina ja toistaa sitten <strong><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/plugin_dir_url\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">plugin_dir_url<\/a><\/strong> -tiedoston sen tiedoston nimell\u00e4, jonka olen valinnut k\u00e4ytett\u00e4v\u00e4ksi (selv\u00e4sti <strong>results.json<\/strong> ).<\/p>\n<h3>4 Tiedoston l\u00e4hett\u00e4minen JavaScriptin kautta<\/h3>\n<p>T\u00e4ss\u00e4 se menee hieman monimutkaisemmaksi. Koodi tarvitsee:<\/p>\n<ol>\n<li>varmista, ett\u00e4 vastaus on oikea,<\/li>\n<li>jos n\u00e4in on, se luo dynaamisesti piilotetun ankkurin<\/li>\n<li>k\u00e4ynnist\u00e4\u00e4 ankkurin napsautustapahtuman simuloidakseen k\u00e4ytt\u00e4j\u00e4n napsauttavan sit\u00e4.<\/li>\n<\/ol>\n<p>K\u00e4yd\u00e4 j\u00e4rkeen? Katso <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13576030a7f1f2f62580935c655421b1#file-08-get-email-addresses-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">anonyymin toiminnon<\/a> tulokset alta:<\/p>\n<pre><code>var _getEmailAddresses = function($elem) {\n    $.get(acme_email_export.ajax_url, {\n        security:  acme_email_export.security,\n        action:    'getEmailAddresses'\n    }, function(response) {\n\n        if ('' === response) {\n            return;\n        }\n\n        \/\/ Creates the element to download the file.\n        $('&lt;a&gt;&lt;\/a&gt;')\n            .attr('href', response)\n            .attr('download', 'response.json')\n            .attr('id', 'acme-download-emails')\n            .text('Download')\n            .attr('style', 'display:none')\n            .appendTo($elem.parent());\n\n        \/\/ Manually trigger clicking of the hidden element to download the file.\n        $('#acme-download-emails')[0].click();\n    });\n};<\/code><\/pre>\n<p>T\u00e4m\u00e4 n\u00e4ytt\u00e4\u00e4 k\u00e4ytt\u00e4j\u00e4lle <strong>lataustiedoston<\/strong> valintaikkunan ja antaa h\u00e4nelle mahdollisuuden n\u00e4ytt\u00e4\u00e4 t\u00e4m\u00e4n ja edellisen viestin kautta luodun JSON-tiedoston.<\/p>\n<h2>Se siit\u00e4?<\/h2>\n<p>Pohjimmiltaan kyll\u00e4. My\u00f6nnet\u00e4\u00e4n, saatat joutua muokkaamaan verkkopalvelimesi koodia, mutta yleinen idea pysyy samana:<\/p>\n<ol>\n<li>suorita kysely,<\/li>\n<li>luoda taulukon,<\/li>\n<li>muuntaa sen JSONiksi,<\/li>\n<li>kirjoittaa sen levylle,<\/li>\n<li>l\u00e4hett\u00e4\u00e4 tiedoston k\u00e4ytt\u00e4j\u00e4lle<\/li>\n<\/ol>\n<p>Ja kyll\u00e4, voit halutessasi k\u00e4ytt\u00e4\u00e4 WordPress-koodausstandardeja (versus PSR2), vanilja JavaScripti\u00e4 (versus jQuery) ja niin edelleen.<\/p>\n<p>Siit\u00e4 huolimatta menettely pysyy samana, ja t\u00e4m\u00e4 on yksi tapa, jolla voit tarjota tavan ladata k\u00e4ytt\u00e4jien s\u00e4hk\u00f6postiosoitteita JSON:n kautta 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>T\u00e4m\u00e4 on toinen kahdesta osasta, kuinka ladata k\u00e4ytt\u00e4jien s\u00e4hk\u00f6postiosoitteet JSON:n kautta WordPressiss\u00e4, hallintavalikosta tai alivalikosta?<\/p>\n","protected":false},"author":1,"featured_media":165738,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[719,895,843],"tags":[1166],"class_list":["post-229938","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-opetusohjelmia","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229938","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=229938"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229938\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/165738"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229938"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229938"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229938"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}