Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Obtenir les adresses des utilisateurs dans WordPress, partie 1

24

Supposons que vous travaillez sur un projet dans lequel vous souhaitez fournir à l’utilisateur la possibilité de télécharger toutes les adresses e-mail des utilisateurs qui existent dans l’installation de WordPress. Certes, cela a quelques exigences:

  • Vous voulez que seuls les administrateurs le fassent,
  • Il doit être sécurisé via des valeurs nonce,
  • Les réponses doivent être en JSON,
  • Et vous souhaitez utiliser JavaScript pour envoyer le fichier lorsqu’il est prêt à être téléchargé.

Chacun des concepts ci-dessus a probablement déjà été abordé ici, mais que se passe-t-il si vous cherchez à les lier tous ensemble ? Autrement dit, que se passe-t-il si vous souhaitez faciliter le téléchargement des adresses e-mail des utilisateurs via JSON dans WordPress à partir, par exemple, d’un menu d’administration ou d’un sous-menu ?

Une photo obligatoire de l’endroit où je travaille en écrivant ce post.

Voici une façon de résoudre ce problème. Notez que cela suppose que vous avez une certaine connaissance de ce qui précède, mais je ferai ce que je peux pour couvrir chacun des éléments ci-dessus.

Télécharger les adresses e-mail des utilisateurs via JSON

Avant de commencer, notez que je le configure pour qu’il fonctionne chaque fois qu’un utilisateur clique sur un sous-menu du  menu Outils dans WordPress.

La façon dont vous configurez vos crochets peut varier. J’ai commencé à utiliser un peu un type particulier d’architecture qui devient de plus en plus standard dans les projets que j’utilise à la fois pour moi et que nous utilisons chez Pressware, mais je m’écarte de cela pour cela (peut-être que je vais donner un aperçu dans ce plus tard).

Ajout d’un sous-menu

Quoi qu’il en soit, voici à quoi ressemble le code pour ajouter le sous-menu.

<?php
public function addSubmenuPage()
{
    add_submenu_page(
        'tools.php',
        'Export Emails',
        'Export Emails',
        'manage_options',
        'acme-export-emails',
        'exportEmails'
    );
}

C’est exactement ce à quoi vous vous attendiez, non ? Si vous utilisez du code orienté objet, vous devrez peut-être (ou non, selon la manière dont vous avez conçu votre solution) utiliser un tableau pour spécifier une instance de la classe actuelle et sa méthode.

Notez également que je ne vais pas m’inquiéter de l’internationalisation dans le cadre de ce billet. Ce n’est pas que cela ne peut pas être fait; ce n’est pas que ce n’est pas important. Il s’agit d’essayer de garder le poste aussi maigre que possible.

Enregistrement du JavaScript

Je vais supposer que vous avez un  fichier exportEmail.js situé dans votre profil et c’est le fichier qui sera chargé d’interroger le côté serveur et de renvoyer le fichier en téléchargement.

La première chose à faire est d’enregistrer en toute sécurité le JavaScript côté serveur à l’aide des fonctions standard de l’API :

<?php

public function addJavaScript()
{
    if (!current_user_can('manage_options')) {
        return;
    }

    wp_enqueue_script(
        'acme-email-export-admin',
        $this->plugin_url. 'Emails/assets/scripts/exportEmail.js',
        array('jquery')
    );

    wp_localize_script(
        'acme-email-export-admin',
        'acme_email_export',
        array(
            'ajax_url' => admin_url('admin-ajax.php'),
            'security' => wp_create_nonce('acme-email-export-nonce')) );
}

Une fois cela fait, vous pouvez écrire le JavaScript qui appellera le côté serveur. Mais il s’agit d’une étape en deux parties : elle inclut à la fois JavaScript, puis davantage de code côté serveur.

Le côté client appelle le côté serveur

Étant donné que les bases sont en place pour appeler le côté serveur, il est possible de configurer le JavaScript maintenant.

Tout d’abord, il y a le gestionnaire de clic :

$('a[href="tools.php?page=acme-export-emails"]').on('click', function(evt){
    evt.preventDefault();
    _getEmailAddresses($(this));
});

L’appel get initial devrait ressembler à ceci :

var _getEmailAddresses = function($elem) {
    $.get(acme_email_export.ajax_url, {
        security:  acme_email_export.security,
        action:    'getEmailAddresses'
    }, function(response) {

        if ('' === response) {
            return;
        }
        // TODO...
    });
};

Notez qu’il utilise la valeur de sécurité que nous avons créée précédemment, puis le nom d’une autre fonction, à savoir getEmailAddresses, qu’il appelle côté serveur.

Cette fonction est responsable de l’exécution d’une requête, de la saisie des adresses e-mail et de l’écriture d’un fichier JSON temporaire à renvoyer à l’utilisateur.

1 Obtenir les adresses e-mail des utilisateurs

Premièrement, WP_User_Query va permettre de retirer tous les utilisateurs pour certains critères.

<?php
private function getUserResults()
{
    $query   = new WP_User_Query(
        array(
            'role_in' => array('administrator','subscriber')) );
    return $query->get_results();
}

Aux fins de cet exemple, je vais évidemment alléger les arguments.

2 Analyser l’e-mail des résultats

Ensuite, je vais parcourir les résultats et stocker les adresses e-mail dans un tableau (que je convertirai éventuellement en JSON).

<?php

private function getUserInfo($results)
{
    $user_info = array();
    foreach ($results as $result) {
        if (isset($result->user_email)) {
            array_push($user_info, $result->user_email);
        }
    }

    return $user_info;
}

Notez qu’il existe d’autres façons de le faire. Ce n’est qu’une façon de le faire pour un ensemble de données plus petit, mais si vous travaillez pour quelque chose d’un peu plus grand, alors je recommande une alternative (qui dépasse le cadre de cet article).

Suivant

De toute évidence, ce n’est que la première partie de la façon de câbler tout cela.

Dans le prochain article, je couvrirai :

  • convertir les informations retournées en JSON,
  • écrire ce fichier sur le disque,
  • et comment lier le reste en utilisant JavaScript.

La dernière étape comprendra la création d’un élément, puis le déclenchement de son événement de clic afin que l’utilisateur se voit présenter la boîte de dialogue de téléchargement plutôt que le texte réel dans une fenêtre de navigateur.

Source d’enregistrement: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More