{"id":229823,"date":"2022-11-14T13:58:00","date_gmt":"2022-11-14T10:58:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229823"},"modified":"2022-11-14T13:58:55","modified_gmt":"2022-11-14T10:58:55","slug":"obtenir-les-adresses-des-utilisateurs-dans-wordpress-partie-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/obtenir-les-adresses-des-utilisateurs-dans-wordpress-partie-2\/","title":{"rendered":"Obtenir les adresses des utilisateurs dans WordPress, partie 2"},"content":{"rendered":"\n<p>Dans <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/obtenir-les-adresses-des-utilisateurs-dans-wordpress-partie-1\/\" title=\"le post pr\u00e9c\u00e9dent\">le post pr\u00e9c\u00e9dent<\/a>, j&rsquo;ai commenc\u00e9 \u00e0 partager comment t\u00e9l\u00e9charger les adresses e-mail des utilisateurs via JSON dans WordPress (en utilisant Ajax). Le premier article couvrait :<\/p>\n<ol>\n<li>enregistrer le JavaScript pour le faire<\/li>\n<li>obtenir les adresses e-mail des utilisateurs,<\/li>\n<li>et analyser les r\u00e9sultats.<\/li>\n<\/ol>\n<p>Il y a plus \u00e0 faire, cependant. \u00c0 savoir:<\/p>\n<ol>\n<li>convertir les informations retourn\u00e9es en JSON,<\/li>\n<li>\u00e9crire ce fichier sur le disque,<\/li>\n<li>et comment lier le reste en utilisant JavaScript.<\/li>\n<\/ol>\n<p>Et c&rsquo;est ce que le reste de ce post va couvrir. Donc, si vous n&rsquo;avez pas lu <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/obtenir-les-adresses-des-utilisateurs-dans-wordpress-partie-1\/\" title=\"l'article pr\u00e9c\u00e9dent\">l&rsquo;article pr\u00e9c\u00e9dent<\/a>, je le recommande si ce n&rsquo;est pour aucune autre raison que de jeter un coup d&rsquo;\u0153il au code pour le voir jusqu&rsquo;ici.<\/p>\n<h2>Adresses e-mail des utilisateurs via JSON, suite<\/h2>\n<p>Outre le fait qu&rsquo;il existe d&rsquo;autres fa\u00e7ons de g\u00e9rer ce m\u00eame processus (certaines plus performantes en fonction du nombre d&rsquo;utilisateurs), notez que j&rsquo;utilise <a href=\"https:\/\/jquery.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jQuery<\/a> (plut\u00f4t que du JavaScript vanille) pour ce faire. Certaines personnes ne sont pas fans de faire cela, et c&rsquo;est cool, mais je n&rsquo;ai pas d&rsquo;exemples dans ce post pour cela.<\/p>\n<p>J&rsquo;opte pour ces exemples car jQuery est livr\u00e9 avec WordPress, de nombreux d\u00e9veloppeurs WordPress l&rsquo;utilisent, il convient parfaitement \u00e0 cette situation et je l&rsquo;aime [toujours]. \ud83d\ude42<\/p>\n<p>Cela dit, je vais reprendre l\u00e0 o\u00f9 j&rsquo;ai laiss\u00e9.<\/p>\n<h3>1 Convertir un tableau en JSON<\/h3>\n<p>Si vous connaissez PHP, c&rsquo;est quelque chose de facile \u00e0 faire. mais si ce n&rsquo;est pas le cas, ce n&rsquo;est pas grave. Tout d&rsquo;abord, passez en revue <a href=\"https:\/\/php.net\/manual\/en\/function.json-encode.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">json_encode<\/a> dans le manuel PHP. Notez qu&rsquo;il prend un tableau et le renverra sous la forme d&rsquo;une cha\u00eene format\u00e9e.<\/p>\n<p>C&rsquo;est ce que j&rsquo;utilise pour convertir le tableau d&rsquo;adresses e-mail en une cha\u00eene de JSON qui sera \u00e9ventuellement \u00e9crite sur le disque. C&rsquo;est une ligne de code.<\/p>\n<pre><code>json_encode($user_results);<\/code><\/pre>\n<p>Rappelez-vous, cependant, qu&rsquo;il existe une fonction qui g\u00e9n\u00e9rera les r\u00e9sultats de l&rsquo;utilisateur selon les besoins. Plus pr\u00e9cis\u00e9ment, j&rsquo;ai appel\u00e9 la fonction <strong>getUserInfo<\/strong>, et je vais la partager momentan\u00e9ment.<\/p>\n<p>Parce que puisque nous allons envoyer un fichier \u00e0 l&rsquo;utilisateur, les informations doivent \u00eatre \u00e9crites sur le disque.<\/p>\n<h3>2 \u00c9crivez-le sur le disque<\/h3>\n<p>\u00c0 ce stade, il est temps d&rsquo;\u00e9crire les r\u00e9sultats sur le disque. Selon les autorisations de votre serveur, vous pourrez peut-\u00eatre \u00e9crire le fichier sur le disque directement dans le r\u00e9pertoire du plugin\u00a0; sinon, vous devrez peut-\u00eatre utiliser le\u00a0 r\u00e9pertoire des <strong>t\u00e9l\u00e9chargements<\/strong>.<\/p>\n<p>En supposant que vous travaillez avec le premier, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13576030a7f1f2f62580935c655421b1#file-06-write-json-to-disk-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">voici \u00e0 quoi<\/a> ressemble la fonction compl\u00e8te\u00a0:<\/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>Tout d&rsquo;abord, il v\u00e9rifie si <strong>results.json<\/strong> existe. Sinon, il cr\u00e9era un fichier vide. Apr\u00e8s cela, il ouvre le fichier en \u00e9criture, d\u00e9pose le contenu du tableau au format JSON dans le fichier, puis ferme la ressource.<\/p>\n<p>Maintenant, le fichier est sur le disque, il est donc temps de l&rsquo;envoyer \u00e0 l&rsquo;utilisateur en utilisant JavaScript.<\/p>\n<h3>3 Envoyez-le \u00e0 l&rsquo;utilisateur<\/h3>\n<p>Tout d&rsquo;abord, nous allons revoir la fonction JavaScript <strong>_getEmailAddresses\u00a0 du post pr\u00e9c\u00e9dent.<\/strong> Vous pouvez voir le travail accompli jusqu&rsquo;\u00e0 pr\u00e9sent dans <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13576030a7f1f2f62580935c655421b1#file-03-get-email-addresses-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cet essentiel<\/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=\"Obtenir les adresses des utilisateurs dans WordPress, partie 2\"><\/a><\/p>\n<p>Notez que la premi\u00e8re chose \u00e0 faire est d&rsquo;appeler une fonction c\u00f4t\u00e9 serveur que j&rsquo;ai choisi d&rsquo;appeler <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>. Notez qu&rsquo;il ex\u00e9cute la requ\u00eate, g\u00e9n\u00e8re le tableau, \u00e9crit le fichier sur le disque et renvoie <strong><em><\/em><\/strong> <strong>le nom du fichier \u00e0 la fonction JavaScript (car WordPress n\u00e9cessite un \u00e9cho plut\u00f4t qu&rsquo;un<\/strong> retour<em><\/em> pour les appels Ajax)\u00a0:<\/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>Notez qu&rsquo;il s&rsquo;agit de trois appels de fonction dont chacun prend les r\u00e9sultats de l&rsquo;autre comme param\u00e8tre, puis renvoie le <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> avec le nom du fichier que j&rsquo;ai choisi d&rsquo;utiliser (clairement <strong>results.json<\/strong> ).<\/p>\n<h3>4 Envoi du fichier via JavaScript<\/h3>\n<p>C&rsquo;est l\u00e0 que \u00e7a se complique un peu. Le code doit\u00a0:<\/p>\n<ol>\n<li>assurez-vous qu&rsquo;il y a une r\u00e9ponse appropri\u00e9e,<\/li>\n<li>si c&rsquo;est le cas, il cr\u00e9era dynamiquement une ancre cach\u00e9e<\/li>\n<li>d\u00e9clencher l&rsquo;\u00e9v\u00e9nement click de l&rsquo;ancre pour simuler un utilisateur cliquant dessus.<\/li>\n<\/ol>\n<p>Avoir du sens\u00a0? D\u00e9couvrez les r\u00e9sultats de <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13576030a7f1f2f62580935c655421b1#file-08-get-email-addresses-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">la fonction anonyme<\/a> ci-dessous\u00a0:<\/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>Cela affichera la\u00a0 bo\u00eete de dialogue de <strong>t\u00e9l\u00e9chargement du fichier<\/strong> \u00e0 l&rsquo;utilisateur et lui permettra d&rsquo;afficher le fichier JSON cr\u00e9\u00e9 via ce message et le pr\u00e9c\u00e9dent.<\/p>\n<h2>C&rsquo;est \u00e7a?<\/h2>\n<p>Essentiellement, oui. Certes, vous devrez peut-\u00eatre apporter des modifications \u00e0 votre code pour votre serveur Web, mais l&rsquo;id\u00e9e g\u00e9n\u00e9rale reste la m\u00eame\u00a0:<\/p>\n<ol>\n<li>ex\u00e9cuter la requ\u00eate,<\/li>\n<li>g\u00e9n\u00e9rer un tableau,<\/li>\n<li>convertissez-le en JSON,<\/li>\n<li>l&rsquo;\u00e9crire sur le disque,<\/li>\n<li>envoyer le fichier \u00e0 l&rsquo;utilisateur<\/li>\n<\/ol>\n<p>Et oui, vous pouvez choisir d&rsquo;utiliser les normes de codage WordPress (versus PSR2), JavaScript vanille (versus jQuery), etc.<\/p>\n<p>Quoi qu&rsquo;il en soit, la proc\u00e9dure reste la m\u00eame et c&rsquo;est une fa\u00e7on de fournir un moyen de t\u00e9l\u00e9charger les adresses e-mail des utilisateurs via JSON dans WordPress.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il s&rsquo;agit de la deuxi\u00e8me des deux parties expliquant comment t\u00e9l\u00e9charger les adresses e-mail des utilisateurs via JSON dans WordPress \u00e0 partir d&rsquo;un menu d&rsquo;administration ou d&rsquo;un sous-menu\u00a0?<\/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":[893,717,841],"tags":[1167],"class_list":["post-229823","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-tutoriels","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229823","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=229823"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229823\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/165738"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229823"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229823"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}