{"id":230166,"date":"2022-11-14T14:07:00","date_gmt":"2022-11-14T11:07:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230166"},"modified":"2022-11-14T14:08:55","modified_gmt":"2022-11-14T11:08:55","slug":"ottieni-indirizzi-utente-in-wordpress-parte-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/ottieni-indirizzi-utente-in-wordpress-parte-2\/","title":{"rendered":"Ottieni indirizzi utente in WordPress, parte 2"},"content":{"rendered":"\n<p>Nel <a href=\"https:\/\/wordpress.mediadoma.com\/it\/ottieni-indirizzi-utente-in-wordpress-parte-1\/\" title=\"post precedente\">post precedente<\/a>, ho iniziato a condividere come scaricare gli indirizzi e-mail degli utenti tramite JSON in WordPress (usando Ajax). Il primo articolo riguardava:<\/p>\n<ol>\n<li>registrazione del JavaScript per farlo<\/li>\n<li>ottenere gli indirizzi email degli utenti,<\/li>\n<li>e analizzare i risultati.<\/li>\n<\/ol>\n<p>C&#8217;\u00e8 altro da fare, per\u00f2. Vale a dire:<\/p>\n<ol>\n<li>convertire le informazioni restituite in JSON,<\/li>\n<li>scrivendo quel file su disco,<\/li>\n<li>e come legare il resto insieme usando JavaScript.<\/li>\n<\/ol>\n<p>Ed \u00e8 ci\u00f2 che tratter\u00e0 il resto di questo post. Quindi, se non hai letto <a href=\"https:\/\/wordpress.mediadoma.com\/it\/ottieni-indirizzi-utente-in-wordpress-parte-1\/\" title=\"l'articolo precedente\">l&#8217;articolo precedente<\/a>, te lo consiglio se non altro per dare un&#8217;occhiata al codice per vederlo fin qui.<\/p>\n<h2>Indirizzi e-mail utente tramite JSON, continua<\/h2>\n<p>A parte il fatto che ci sono altri modi per gestire questo stesso processo (alcuni pi\u00f9 performanti a seconda del numero di utenti), tieni presente che sto usando <a href=\"https:\/\/jquery.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jQuery<\/a> (piuttosto che JavaScript vanigliato) per farlo. Alcune persone non sono fan di farlo, ed \u00e8 fantastico, ma non ho esempi in questo post per quello.<\/p>\n<p>Opto per questi esempi perch\u00e9 jQuery viene fornito con WordPress, molti sviluppatori di WordPress lo usano, si adatta al conto per questa situazione e [ancora] mi piace. \ud83d\ude42<\/p>\n<p>Detto questo, riprender\u00f2 da dove avevo interrotto.<\/p>\n<h3>1 Converti un array in JSON<\/h3>\n<p>Se hai familiarit\u00e0 con PHP, questo \u00e8 qualcosa che \u00e8 facile da fare; ma se no, non \u00e8 un grosso problema. Per prima cosa, <a href=\"https:\/\/php.net\/manual\/en\/function.json-encode.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">rivedi json_encode<\/a> nel manuale PHP. Nota che prende un array e lo restituir\u00e0 come una stringa formattata.<\/p>\n<p>Questo \u00e8 ci\u00f2 che uso per convertire l&#8217;array di indirizzi e-mail in una stringa di JSON che verr\u00e0 eventualmente scritta su disco. \u00c8 una riga di codice.<\/p>\n<pre><code>json_encode($user_results);<\/code><\/pre>\n<p>Ricorda, tuttavia, che esiste una funzione che generer\u00e0 i risultati dell&#8217;utente secondo necessit\u00e0. In particolare, ho chiamato la funzione <strong>getUserInfo<\/strong> e la condivider\u00f2 momentaneamente.<\/p>\n<p>Perch\u00e9 poich\u00e9 invieremo un file all&#8217;utente, le informazioni devono essere scritte su disco.<\/p>\n<h3>2 Scrivilo su disco<\/h3>\n<p>A questo punto, \u00e8 il momento di scrivere i risultati su disco. A seconda dei permessi del tuo server, potresti essere in grado di scrivere il file su disco direttamente nella directory del plugin; in caso contrario, potrebbe essere necessario utilizzare la\u00a0 directory dei <strong>caricamenti<\/strong>.<\/p>\n<p>Supponendo che tu stia operando con il primo, ecco come appare <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13576030a7f1f2f62580935c655421b1#file-06-write-json-to-disk-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">la funzione completa :<\/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>Innanzitutto, controlla se esiste <strong>results.json .<\/strong> In caso contrario, creer\u00e0 un file vuoto. Successivamente, apre il file per la scrittura, rilascia il contenuto dell&#8217;array nel formato JSON nel file, quindi chiude la risorsa.<\/p>\n<p>Ora il file \u00e8 su disco, quindi \u00e8 il momento di inviarlo all&#8217;utente utilizzando JavaScript.<\/p>\n<h3>3 Inviarlo all&#8217;utente<\/h3>\n<p>Per prima cosa, rivisiteremo la funzione JavaScript <strong>_getEmailAddresses\u00a0 del post precedente.<\/strong> Puoi vedere il lavoro svolto finora in <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13576030a7f1f2f62580935c655421b1#file-03-get-email-addresses-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">questo succo<\/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=\"Ottieni indirizzi utente in WordPress, parte 2\"><\/a><\/p>\n<p>Nota che la prima cosa da fare \u00e8 chiamare una funzione lato server che ho scelto di chiamare <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>. Nota che esegue la query, genera l&#8217;array, scrive il file su disco e fa <strong>eco<em><\/em><\/strong> del <strong>nome del file alla funzione JavaScript (perch\u00e9 WordPress richiede un&#8217;eco anzich\u00e9 un<\/strong> ritorno<em><\/em> per le chiamate Ajax):<\/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>Si noti che si tratta di tre chiamate di funzione ciascuna delle quali prende i risultati dell&#8217;altra come parametro e quindi fa eco\u00a0 a <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> con il nome del file che ho scelto di utilizzare (chiaramente <strong>results.json<\/strong> ).<\/p>\n<h3>4 Invio del file tramite JavaScript<\/h3>\n<p>Qui \u00e8 dove diventa un po&#8217; pi\u00f9 complicato. Il codice deve:<\/p>\n<ol>\n<li>assicurati che ci sia una risposta adeguata,<\/li>\n<li>in tal caso, creer\u00e0 dinamicamente un&#8217;ancora nascosta<\/li>\n<li>attiva l&#8217;evento click dell&#8217;ancora per simulare un utente che fa clic su di esso.<\/li>\n<\/ol>\n<p>Ha senso? Dai un&#8217;occhiata ai risultati della <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13576030a7f1f2f62580935c655421b1#file-08-get-email-addresses-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">funzione anonima<\/a> qui sotto:<\/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>Questo mostrer\u00e0\u00a0 all&#8217;utente la finestra di dialogo del <strong>file di download<\/strong> e consentir\u00e0 loro di visualizzare il file JSON creato tramite questo e il post precedente.<\/p>\n<h2>Questo \u00e8 tutto?<\/h2>\n<p>In sostanza, s\u00ec. Certo, potresti dover apportare modifiche al tuo codice per il tuo server web, ma l&#8217;idea generale rimane la stessa:<\/p>\n<ol>\n<li>eseguire la query,<\/li>\n<li>generare un array,<\/li>\n<li>convertilo in JSON,<\/li>\n<li>scrivilo su disco,<\/li>\n<li>inviare il file all&#8217;utente<\/li>\n<\/ol>\n<p>E s\u00ec, puoi scegliere di utilizzare gli standard di codifica di WordPress (rispetto a PSR2), JavaScript vanilla (rispetto a jQuery) e cos\u00ec via.<\/p>\n<p>Indipendentemente da ci\u00f2, la procedura rimane la stessa e questo \u00e8 un modo per fornire un modo per scaricare gli indirizzi e-mail degli utenti tramite JSON in WordPress.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Questa \u00e8 la seconda di due parti di come scaricare gli indirizzi e-mail degli utenti tramite JSON all&#8217;interno di WordPress da un menu di amministrazione o un sottomenu?<\/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":[896,720,844],"tags":[1168],"class_list":["post-230166","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-sviluppatore","category-tutorial","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230166","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=230166"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230166\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/165738"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=230166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=230166"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=230166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}