{"id":229381,"date":"2022-11-14T14:18:00","date_gmt":"2022-11-14T11:18:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229381"},"modified":"2022-11-14T14:18:04","modified_gmt":"2022-11-14T11:18:04","slug":"hankige-kasutajate-aadressid-wordpressis-2-osa","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/hankige-kasutajate-aadressid-wordpressis-2-osa\/","title":{"rendered":"Hankige kasutajate aadressid WordPressis, 2. osa"},"content":{"rendered":"\n<p>Eelmises <a href=\"https:\/\/wordpress.mediadoma.com\/et\/hankige-kasutajate-aadressid-wordpressis-1-osa\/\" title=\"postituses\">postituses<\/a> hakkasin jagama, kuidas WordPressis (kasutades Ajaxit) JSON-i kaudu kasutajate e-posti aadresse alla laadida. Esimene artikkel k\u00e4sitles:<\/p>\n<ol>\n<li>selleks JavaScripti registreerimine<\/li>\n<li>kasutajate e-posti aadresside hankimine,<\/li>\n<li>ja anal\u00fc\u00fcsides tulemusi.<\/li>\n<\/ol>\n<p>Siiski on veel teha. Nimelt:<\/p>\n<ol>\n<li>tagastatud teabe teisendamine JSON-iks,<\/li>\n<li>selle faili kettale kirjutamine,<\/li>\n<li>ja kuidas \u00fclej\u00e4\u00e4nud osa JavaScripti abil kokku siduda.<\/li>\n<\/ol>\n<p>Ja seda selle postituse \u00fclej\u00e4\u00e4nud osa katab. Nii et kui te pole <a href=\"https:\/\/wordpress.mediadoma.com\/et\/hankige-kasutajate-aadressid-wordpressis-1-osa\/\" title=\"eelmist artiklit\">eelmist artiklit<\/a> lugenud, soovitan seda mitte muul p\u00f5hjusel kui koodile pilk heita, et seda seni n\u00e4ha.<\/p>\n<h2>Kasutajate e-posti aadressid JSON-i kaudu, j\u00e4tkab<\/h2>\n<p>Peale selle, et sama protsessi k\u00e4sitlemiseks on ka teisi viise (olenevalt kasutajate arvust, on m\u00f5ned t\u00f5husamad), pange t\u00e4hele, et ma kasutan selleks <a href=\"https:\/\/jquery.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jQueryt<\/a> (vanilje JavaScripti asemel). M\u00f5ned inimesed ei ole selle tegemise f\u00e4nnid ja see on lahe, kuid mul pole selles postituses selle kohta n\u00e4iteid.<\/p>\n<p>Valin need n\u00e4ited, kuna jQuery tarnitakse koos WordPressiga, paljud WordPressi arendajad kasutavad seda, see sobib selle olukorraga ja mulle meeldib see endiselt. \ud83d\ude42<\/p>\n<p>Seda \u00f6eldes j\u00e4tkan sealt, kus pooleli j\u00e4in.<\/p>\n<h3>1 Teisendage massiiv JSON-iks<\/h3>\n<p>Kui olete PHP-ga tuttav, on seda lihtne teha; aga kui ei, siis pole sellest suurt midagi. Esiteks vaadake PHP k\u00e4siraamatus \u00fcle <a href=\"https:\/\/php.net\/manual\/en\/function.json-encode.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">json_encode .<\/a> Pange t\u00e4hele, et see v\u00f5tab massiivi ja tagastab selle vormindatud stringina.<\/p>\n<p>Seda ma kasutan e-posti aadresside massiivi teisendamiseks JSON-i stringiks, mis l\u00f5puks kettale kirjutatakse. See on \u00fcks koodirida.<\/p>\n<pre><code>json_encode($user_results);<\/code><\/pre>\n<p>Pidage meeles, et on olemas funktsioon, mis genereerib vastavalt vajadusele kasutajatulemusi. T\u00e4psemalt kutsusin ma funktsiooni <strong>getUserInfo<\/strong> ja jagan seda hetkeks.<\/p>\n<p>Kuna me saadame faili kasutajale, tuleb teave kettale kirjutada.<\/p>\n<h3>2 Kirjutage see kettale<\/h3>\n<p>Sel hetkel on aeg tulemused kettale kirjutada. S\u00f5ltuvalt teie serveri \u00f5igustest v\u00f5ite faili kettale kirjutada otse pistikprogrammi kataloogis; vastasel juhul peate v\u00f5ib-olla kasutama <strong>\u00fcleslaadimiste<\/strong> kataloogi.<\/p>\n<p>Eeldades, et kasutate esimest, n\u00e4eb <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13576030a7f1f2f62580935c655421b1#file-06-write-json-to-disk-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4isfunktsioon v\u00e4lja j\u00e4rgmine:<\/a><\/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>Esiteks kontrollib see, kas <strong>result.json<\/strong> on olemas. Kui ei, loob see t\u00fchja faili. P\u00e4rast seda avab see faili kirjutamiseks, langetab JSON-vormingus massiivi sisu faili ja sulgeb seej\u00e4rel ressursi.<\/p>\n<p>N\u00fc\u00fcd on fail kettal, seega on aeg see JavaScripti kasutades kasutajale saata.<\/p>\n<h3>3 Saatke see kasutajale<\/h3>\n<p>Esiteks vaatame uuesti eelmise postituse JavaScripti funktsiooni <strong>_getEmailAddresses\u00a0 .<\/strong> Siiani tehtud t\u00f6\u00f6d n\u00e4ete <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13576030a7f1f2f62580935c655421b1#file-03-get-email-addresses-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selles kokkuv\u00f5ttes<\/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=\"Hankige kasutajate aadressid WordPressis, 2. osa\"><\/a><\/p>\n<p>Pange t\u00e4hele, et esimese asjana tuleb kutsuda serveripoolne funktsioon, mille olen valinud <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13576030a7f1f2f62580935c655421b1#file-07-get-email-addresses-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">getEmailAddresses kutsumise<\/a>. Pange t\u00e4hele, et see k\u00e4ivitab p\u00e4ringu, genereerib massiivi, kirjutab faili kettale ja <strong>kordab<em><\/em><\/strong> failinime <strong>JavaScripti funktsioonile (kuna WordPress n\u00f5uab Ajaxi k\u00f5nede jaoks pigem kaja, mitte<\/strong> tagastamist<em><\/em>):<\/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>Pange t\u00e4hele, et tegemist on kolme funktsioonikutsega, millest iga\u00fcks v\u00f5tab parameetrina teise tulemused ja kordab seej\u00e4rel <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> faili nimega, mida olen valinud kasutada (selgelt <strong>results.json<\/strong> ).<\/p>\n<h3>4 Faili saatmine JavaScripti kaudu<\/h3>\n<p>Siin l\u00e4heb asi veidi keerulisemaks. Kood vajab:<\/p>\n<ol>\n<li>veenduge, et on \u00f5ige vastus,<\/li>\n<li>kui jah, siis loob see d\u00fcnaamiliselt peidetud ankru<\/li>\n<li>k\u00e4ivitab ankru kliki s\u00fcndmuse, et simuleerida kasutaja sellel kl\u00f5psamist.<\/li>\n<\/ol>\n<p>On loogiline? Vaadake allpool <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13576030a7f1f2f62580935c655421b1#file-08-get-email-addresses-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">anon\u00fc\u00fcmse funktsiooni tulemusi:<\/a><\/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>See kuvab\u00a0 kasutajale <strong>faili allalaadimise<\/strong> dialoogi ja v\u00f5imaldab neil kuvada selle ja eelmise postituse kaudu loodud JSON-faili.<\/p>\n<h2>See on see?<\/h2>\n<p>Sisuliselt jah. T\u00f5si, peate v\u00f5ib-olla oma veebiserveri koodi muutma, kuid \u00fcldidee j\u00e4\u00e4b samaks:<\/p>\n<ol>\n<li>k\u00e4ivitage p\u00e4ring,<\/li>\n<li>genereerida massiiv,<\/li>\n<li>teisendage see JSON-iks,<\/li>\n<li>kirjutage see kettale,<\/li>\n<li>saata fail kasutajale<\/li>\n<\/ol>\n<p>Ja jah, v\u00f5ite valida WordPressi kodeerimisstandardite (versus PSR2), vanilje JavaScripti (vs. jQuery) ja nii edasi.<\/p>\n<p>Sellest hoolimata j\u00e4\u00e4b protseduur samaks ja see on \u00fcks viis, kuidas saate WordPressis JSON-i kaudu kasutajate e-posti aadresse alla laadida.<\/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>See on teine \u200b\u200bkahest osast, kuidas kasutajate e-posti aadresse WordPressis JSON-i kaudu alla laadida, haldusmen\u00fc\u00fcst v\u00f5i alammen\u00fc\u00fcst?<\/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":[718,894,842],"tags":[1165],"class_list":["post-229381","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-opetused","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229381","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=229381"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229381\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/165738"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=229381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=229381"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=229381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}