Hanki käyttäjäosoitteita WordPressissä, osa 2
Edellisessä viestissä aloin jakaa käyttäjien sähköpostiosoitteiden lataamisen JSON:n kautta WordPressissä (Ajaxia käyttämällä). Ensimmäinen artikkeli käsitteli:
- JavaScriptin rekisteröiminen tätä varten
- saada käyttäjien sähköpostiosoitteet,
- ja jäsentää tulokset.
Tekemistä on kuitenkin enemmän. Nimittäin:
- muuntaa palautetut tiedot JSON-muotoon,
- tiedoston kirjoittaminen levylle,
- ja kuinka sitoa loput yhteen JavaScriptin avulla.
Ja sitä tämän postauksen loppuosa käsittelee. Joten jos et ole lukenut edellistä artikkelia, suosittelen sitä jos ei mistään muusta syystä kuin vilkaista koodia nähdäksesi sen tähän mennessä.
Käyttäjien sähköpostiosoitteet JSONin kautta, jatkuu
Sen lisäksi, että on olemassa muita tapoja käsitellä tätä samaa prosessia (joitakin tehokkaampia käyttäjien lukumäärästä riippuen), huomaa, että käytän jQueryä (eikä vanilla JavaScriptiä) tähän. Jotkut ihmiset eivät ole tämän tekemisen faneja, ja se on siistiä, mutta minulla ei ole esimerkkejä tästä viestistä.
Valitsen nämä esimerkit, koska jQuery toimitetaan WordPressin mukana, monet WordPress-kehittäjät käyttävät sitä, se sopii tähän tilanteeseen ja pidän siitä [edelleen]. 🙂
Tämän sanottuani jatkan siitä mihin jäin.
1 Muunna taulukko JSON-muotoon
Jos olet perehtynyt PHP:hen, tämä on helppo tehdä; mutta jos ei, se ei ole iso juttu. Tarkista ensin PHP-oppaan json_encode . Huomaa, että se ottaa taulukon ja palauttaa sen muotoiltuna merkkijonona.
Tätä käytän muuntamaan sähköpostiosoitteet JSON-jonoksi, joka lopulta kirjoitetaan levylle. Se on yksi koodirivi.
json_encode($user_results);
Muista kuitenkin, että on toiminto, joka tuottaa käyttäjätuloksia tarpeen mukaan. Nimenomaan kutsuin funktiota getUserInfo ja jaan sen hetken.
Koska aiomme lähettää tiedoston käyttäjälle, tiedot on kirjoitettava levylle.
2 Kirjoita se levylle
Tässä vaiheessa on aika kirjoittaa tulokset levylle. Palvelimesi käyttöoikeuksista riippuen voit ehkä kirjoittaa tiedoston levylle suoraan laajennuksen hakemistoon. muuten saatat joutua käyttämään lataushakemistoa.
Olettaen, että käytät edellistä, koko toiminto näyttää tältä:
<?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);
}
Ensin se tarkistaa, onko results.json olemassa. Jos ei, se luo tyhjän tiedoston. Sen jälkeen se avaa tiedoston kirjoittamista varten, pudottaa JSON-muodossa olevan taulukon sisällön tiedostoon ja sulkee sitten resurssin.
Nyt tiedosto on levyllä, joten on aika lähettää se käyttäjälle JavaScriptin avulla.
3 Lähetä se käyttäjälle
Ensin palataan edellisen viestin JavaScript-toimintoon _getEmailAddresses . Näet tähän mennessä tehdyn työn tästä sisällöstä.
Huomaa, että ensimmäinen asia on kutsua palvelinpuolen toimintoa, jonka olen valinnut kutsuvan getEmailAddresses. Huomaa, että se suorittaa kyselyn, luo taulukon, kirjoittaa tiedoston levylle ja kaiuttaa tiedostonimen JavaScript-funktiolle (koska WordPress vaatii kaiun sijaan returnin Ajax-kutsuille):
<?php
public function getEmailAddresses()
{
$this->writeAddressesToDisk(
$this->getUserInfo(
$this->getUserResults()) );
echo plugin_dir_url(__FILE__). 'results.json';
die;
}
Huomaa, että kyseessä on kolme funktiokutsua, joista jokainen ottaa toisen tulokset parametreina ja toistaa sitten plugin_dir_url -tiedoston sen tiedoston nimellä, jonka olen valinnut käytettäväksi (selvästi results.json ).
4 Tiedoston lähettäminen JavaScriptin kautta
Tässä se menee hieman monimutkaisemmaksi. Koodi tarvitsee:
- varmista, että vastaus on oikea,
- jos näin on, se luo dynaamisesti piilotetun ankkurin
- käynnistää ankkurin napsautustapahtuman simuloidakseen käyttäjän napsauttavan sitä.
Käydä järkeen? Katso anonyymin toiminnon tulokset alta:
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();
});
};
Tämä näyttää käyttäjälle lataustiedoston valintaikkunan ja antaa hänelle mahdollisuuden näyttää tämän ja edellisen viestin kautta luodun JSON-tiedoston.
Se siitä?
Pohjimmiltaan kyllä. Myönnetään, saatat joutua muokkaamaan verkkopalvelimesi koodia, mutta yleinen idea pysyy samana:
- suorita kysely,
- luoda taulukon,
- muuntaa sen JSONiksi,
- kirjoittaa sen levylle,
- lähettää tiedoston käyttäjälle
Ja kyllä, voit halutessasi käyttää WordPress-koodausstandardeja (versus PSR2), vanilja JavaScriptiä (versus jQuery) ja niin edelleen.
Siitä huolimatta menettely pysyy samana, ja tämä on yksi tapa, jolla voit tarjota tavan ladata käyttäjien sähköpostiosoitteita JSON:n kautta WordPressissä.
