✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Uzyskaj adresy użytkowników w WordPress, część 2

12

W poprzednim poście zacząłem udostępniać, jak pobierać adresy e-mail użytkowników przez JSON w WordPressie (za pomocą Ajax). Pierwszy artykuł obejmował:

  1. rejestracja JavaScript w tym celu
  2. pozyskiwanie adresów e-mail użytkowników,
  3. i analizowanie wyników.

Jest jednak więcej do zrobienia. Mianowicie:

  1. konwersja zwróconych informacji do formatu JSON,
  2. zapisanie tego pliku na dysku,
  3. i jak powiązać resztę za pomocą JavaScript.

I o tym będzie mowa w dalszej części tego postu. Więc jeśli nie czytałeś poprzedniego artykułu, polecam go choćby z powodu spojrzenia na kod, aby zobaczyć go do tej pory.

Adresy e-mail użytkowników za pośrednictwem JSON, ciąg dalszy

Oprócz tego, że istnieją inne sposoby obsługi tego samego procesu (niektóre bardziej wydajne w zależności od liczby użytkowników), zauważ, że do tego używam jQuery (zamiast waniliowego JavaScript). Niektórzy ludzie nie są fanami tego i to jest fajne, ale nie mam na to przykładów w tym poście.

Wybieram te przykłady, ponieważ jQuery jest dostarczane z WordPressem, wielu programistów WordPressa z niego korzysta, pasuje do tej sytuacji i [nadal] mi się podoba.

Powiedziawszy to, wrócę od miejsca, w którym skończyłem.

1 Konwertuj tablicę na JSON

Jeśli znasz PHP, jest to łatwe do zrobienia; ale jeśli nie, to nic wielkiego. Najpierw przejrzyj json_encode w podręczniku PHP. Zauważ, że pobiera tablicę i zwróci ją jako sformatowany ciąg.

To jest to, czego używam do konwersji tablicy adresów e-mail na ciąg JSON, który ostatecznie zostanie zapisany na dysku. To jedna linijka kodu.

json_encode($user_results);

Pamiętaj jednak, że istnieje funkcja, która w razie potrzeby wygeneruje wyniki użytkownika. W szczególności wywołałem funkcję getUserInfo i za chwilę ją udostępnię.

Ponieważ ponieważ zamierzamy wysłać plik do użytkownika, informacje muszą zostać zapisane na dysku.

2 Zapisz to na dysku

W tym momencie nadszedł czas na zapisanie wyników na dysku. W zależności od uprawnień serwera, możesz mieć możliwość zapisania pliku na dysku bezpośrednio w katalogu wtyczki; w przeciwnym razie może być konieczne użycie  katalogu uploads.

Zakładając, że pracujesz z pierwszym, oto jak wygląda pełna funkcja :

<?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);
}

Najpierw sprawdza, czy istnieje plik results.json . Jeśli nie, utworzy pusty plik. Następnie otwiera plik do zapisu, wrzuca zawartość tablicy w formacie JSON do pliku, a następnie zamyka zasób.

Teraz plik znajduje się na dysku, więc czas wysłać go użytkownikowi za pomocą JavaScript.

3 Wyślij go do użytkownika

Najpierw przyjrzymy się  funkcji JavaScript _getEmailAddresses  z poprzedniego postu. Możesz zobaczyć dotychczasową pracę w tym sednie.

Uzyskaj adresy użytkowników w WordPress, część 2

Zauważ, że pierwszą rzeczą do zrobienia jest wywołanie funkcji po stronie serwera, którą zdecydowałem się wywołać getEmailAddresses. Zauważ, że uruchamia zapytanie, generuje tablicę, zapisuje plik na dysku i echo podaje nazwę pliku do funkcji JavaScript (ponieważ WordPress wymaga echa zamiast powrotu dla wywołań Ajax):

<?php

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

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

Zauważ, że są to trzy wywołania funkcji, z których każde przyjmuje wyniki drugiego jako parametr, a następnie wywołuje echo plugin_dir_url z nazwą pliku, którego zdecydowałem się użyć (wyraźnie results.json ).

4 Wysyłanie pliku przez JavaScript

Tutaj sprawa staje się nieco bardziej skomplikowana. Kod musi:

  1. upewnij się, że jest poprawna odpowiedź,
  2. jeśli tak, to dynamicznie utworzy ukrytą kotwicę
  3. wywołać zdarzenie kliknięcia kotwicy, aby zasymulować kliknięcie przez użytkownika.

Ma sens? Sprawdź poniżej wyniki funkcji anonimowej :

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();
    });
};

Spowoduje to wyświetlenie  użytkownikowi okna dialogowego pobierania pliku i umożliwi wyświetlenie pliku JSON utworzonego w tym i poprzednim poście.

Otóż ​​to?

Zasadniczo tak. To prawda, że ​​może być konieczne wprowadzenie poprawek w kodzie serwera WWW, ale ogólna idea pozostaje taka sama:

  1. uruchomić zapytanie,
  2. wygenerować tablicę,
  3. przekonwertuj go na JSON,
  4. zapisz to na dysku,
  5. wyślij plik do użytkownika

I tak, możesz zdecydować się na użycie standardów kodowania WordPress (w porównaniu z PSR2), waniliowego JavaScript (w porównaniu z jQuery) i tak dalej.

Niezależnie od tego procedura pozostaje taka sama i jest to jeden ze sposobów, w jaki możesz zapewnić sposób pobierania adresów e-mail użytkowników za pośrednictwem JSON w WordPress.

Źródło nagrywania: tommcfarlin.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów