✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

Benutzeradressen in WordPress abrufen, Teil 2

17

Im vorherigen Beitrag habe ich begonnen, zu teilen, wie man E-Mail-Adressen von Benutzern über JSON in WordPress (unter Verwendung von Ajax) herunterlädt. Der erste Artikel behandelte:

  1. das JavaScript dafür registrieren
  2. Abrufen der E-Mail-Adressen der Benutzer,
  3. und die Ergebnisse auswerten.

Es gibt jedoch noch mehr zu tun. Nämlich:

  1. Konvertieren der zurückgegebenen Informationen in JSON,
  2. Schreiben dieser Datei auf die Festplatte,
  3. und wie man den Rest mit JavaScript zusammenbindet.

Und darum geht es im Rest dieses Beitrags. Wenn Sie also den vorangegangenen Artikel nicht gelesen haben, empfehle ich es, wenn auch aus keinem anderen Grund, als einen Blick auf den Code zu werfen, um ihn so weit zu sehen.

Benutzer-E-Mail-Adressen über JSON, Fortsetzung

Abgesehen von der Tatsache, dass es andere Möglichkeiten gibt, denselben Prozess zu handhaben (einige leistungsfähiger, abhängig von der Anzahl der Benutzer), beachten Sie, dass ich jQuery (anstelle von Vanille-JavaScript) verwende, um dies zu tun. Einige Leute sind keine Fans davon, und das ist cool, aber ich habe in diesem Beitrag keine Beispiele dafür.

Ich entscheide mich für diese Beispiele, weil jQuery mit WordPress geliefert wird, viele WordPress-Entwickler es verwenden, es für diese Situation geeignet ist und es mir [noch] gefällt. 🙂

In diesem Sinne mache ich da weiter, wo ich aufgehört habe.

1 Konvertieren Sie ein Array in JSON

Wenn Sie sich mit PHP auskennen, ist dies einfach zu bewerkstelligen; aber wenn nicht, ist es keine große Sache. Sehen Sie sich zunächst json_encode im PHP-Handbuch an. Beachten Sie, dass es ein Array akzeptiert und es als formatierten String zurückgibt.

Dies ist, was ich verwende, um das Array von E-Mail-Adressen in eine JSON-Zeichenfolge zu konvertieren, die schließlich auf die Festplatte geschrieben wird. Es ist eine Codezeile.

json_encode($user_results);

Denken Sie jedoch daran, dass es eine Funktion gibt, die die Benutzerergebnisse nach Bedarf generiert. Insbesondere habe ich die Funktion getUserInfo aufgerufen und werde sie gleich teilen.

Da wir eine Datei an den Benutzer senden werden, müssen die Informationen auf die Festplatte geschrieben werden.

2 Schreiben Sie es auf die Festplatte

An diesem Punkt ist es an der Zeit, die Ergebnisse auf die Festplatte zu schreiben. Abhängig von den Berechtigungen Ihres Servers können Sie die Datei möglicherweise direkt in das Verzeichnis des Plugins auf die Festplatte schreiben; Andernfalls müssen Sie möglicherweise das Uploads- Verzeichnis verwenden.

Angenommen, Sie arbeiten mit Ersterem, sieht die vollständige Funktion folgendermaßen aus:

<?php

private function writeAddressesToDisk($addresses)
{
    $path = plugin_dir_path(__FILE__). 'results.json';
    if (!file_exists($path)) {
        touch($path);
    }

    $handle = fopen($path, 'w');
    fwrite($handle, json_encode($addresses));
    fclose($handle);
}

Zuerst wird überprüft, ob results.json vorhanden ist. Wenn nicht, wird eine leere Datei erstellt. Danach öffnet es die Datei zum Schreiben, legt den Inhalt des Arrays im JSON-Format in der Datei ab und schließt dann die Ressource.

Jetzt befindet sich die Datei auf der Festplatte, also ist es an der Zeit, sie mit JavaScript an den Benutzer zu senden.

3 Senden Sie es an den Benutzer

Zuerst greifen wir die  JavaScript-Funktion _getEmailAddresses  aus dem vorherigen Beitrag erneut auf. Sie können die bisher geleistete Arbeit in diesem Überblick sehen.

Benutzeradressen in WordPress abrufen, Teil 2

Beachten Sie, dass Sie als Erstes eine serverseitige Funktion aufrufen müssen. Ich habe mich für getEmailAddresses entschieden. Beachten Sie, dass es die Abfrage ausführt, das Array generiert, die Datei auf die Festplatte schreibt und den Dateinamen an die JavaScript-Funktion echo (weil WordPress für Ajax-Aufrufe eher ein Echo als eine Rückgabe erfordert):

<?php

public function getEmailAddresses()
{
    $this->writeAddressesToDisk(
        $this->getUserInfo(
            $this->getUserResults()) );

    echo plugin_dir_url(__FILE__). 'results.json';
    die;
}

Beachten Sie, dass dies drei Funktionsaufrufe sind, von denen jeder die Ergebnisse des anderen als Parameter nimmt und dann die plugin_dir_url mit dem Namen der Datei zurückgibt, für deren Verwendung ich mich entschieden habe (eindeutig results.json ).

4 Senden der Datei über JavaScript

Hier wird es etwas komplizierter. Der Code muss:

  1. Stellen Sie sicher, dass es eine angemessene Antwort gibt,
  2. Wenn dies der Fall ist, wird dynamisch ein versteckter Anker erstellt
  3. löst das Klickereignis des Ankers aus, um einen Benutzer zu simulieren, der darauf klickt.

Sinn ergeben? Schauen Sie sich die Ergebnisse der anonymen Funktion unten an:

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

        if ('' === response) {
            return;
        }

        // Creates the element to download the file.
        $('<a></a>')
            .attr('href', response)
            .attr('download', 'response.json')
            .attr('id', 'acme-download-emails')
            .text('Download')
            .attr('style', 'display:none')
            .appendTo($elem.parent());

        // Manually trigger clicking of the hidden element to download the file.
        $('#acme-download-emails')[0].click();
    });
};

Dadurch wird  dem Benutzer das Dialogfeld zum Herunterladen der Datei angezeigt, und er kann die JSON-Datei anzeigen, die durch diesen und den vorherigen Beitrag erstellt wurde.

Das ist es?

Im Wesentlichen ja. Zugegeben, Sie müssen möglicherweise Änderungen an Ihrem Code für Ihren Webserver vornehmen, aber die allgemeine Idee bleibt dieselbe:

  1. Führen Sie die Abfrage aus,
  2. ein Array generieren,
  3. Konvertieren Sie es in JSON,
  4. auf die Festplatte schreiben,
  5. Senden Sie die Datei an den Benutzer

Und ja, Sie können sich für die Verwendung der WordPress Coding Standards (gegenüber PSR2), Vanilla JavaScript (gegenüber jQuery) und so weiter entscheiden.

Unabhängig davon bleibt das Verfahren gleich und dies ist eine Möglichkeit, Benutzer-E-Mail-Adressen über JSON in WordPress herunterzuladen.

Aufnahmequelle: tommcfarlin.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen