Hanki käyttäjäosoitteita WordPressissä, osa 1
Oletetaan, että työskentelet projektin parissa, jossa haluat antaa käyttäjälle mahdollisuuden ladata kaikki WordPress-asennuksessa olevien käyttäjien sähköpostiosoitteet. Myönnettäköön, että tällä on muutamia vaatimuksia:
- Haluat vain järjestelmänvalvojien tekevän sen,
- Sen on oltava turvallinen nonce-arvojen avulla,
- Vastausten tulee olla JSON-muodossa,
- Ja haluat käyttää JavaScriptiä tiedoston lähettämiseen, kun se on valmis ladattavaksi.
Jokainen yllä olevista käsitteistä on todennäköisesti käsitelty täällä aiemmin, mutta entä jos haluat yhdistää ne kaikki yhteen? Eli entä jos haluat helpottaa käyttäjien sähköpostiosoitteiden lataamista JSONin kautta WordPressissä esimerkiksi hallintavalikosta tai alivalikosta?
Pakollinen kuva työpaikastani tätä postausta kirjoittaessani.
Tässä on yksi tapa ratkaista tämä ongelma. Huomaa, että se edellyttää, että sinulla on jonkin verran tietoa yllä olevista, mutta teen kaikkeni kattaakseni kaikki edellä mainitut.
Lataa käyttäjien sähköpostiosoitteet JSON:n kautta
Ennen kuin aloitat, huomaa, että määritän tämän toimimaan aina, kun käyttäjä napsauttaa WordPressin Työkalut -valikon alivalikkoa.
Tapa, jolla asetat koukut, voi vaihdella. Olen alkanut käyttää vähän tietyntyyppistä arkkitehtuuria, josta on tulossa yhä vakiomuotoisempi projekteissa, joita käytän sekä itsessäni että Presswaressa, mutta poikkean siitä tässä (ehkä annan jonkinlaisen käsityksen tähän myöhemmin).
Alivalikon lisääminen
Joka tapauksessa alivalikon lisäämisen koodi näyttää tältä .
<?php
public function addSubmenuPage()
{
add_submenu_page(
'tools.php',
'Export Emails',
'Export Emails',
'manage_options',
'acme-export-emails',
'exportEmails'
);
}
Se on juuri sitä mitä odotit, eikö? Jos käytät oliopohjaista koodia, saatat joutua käyttämään taulukkoa määrittämään nykyisen luokan esiintymän ja sen menetelmän (tai ei, riippuen siitä, miten olet rakentanut ratkaisusi).
Huomaa myös, että en aio olla huolissani kansainvälistymisestä tämän postauksen yhteydessä. Kyse ei ole siitä, etteikö sitä voisi tehdä; se ei tarkoita, etteikö se olisi tärkeää. On yritettävä pitää viesti mahdollisimman laimeana.
JavaScriptin rekisteröinti
Oletan, että profiilissasi on exportEmail.js -tiedosto, ja tämä tiedosto vastaa kyselyn tekemisestä palvelinpuolelta ja tiedoston palauttamisesta ladattavaksi.
Ensimmäinen asia, joka sinun tulee tehdä, on rekisteröidä JavaScript turvallisesti palvelimen puolella käyttämällä standardi API-toimintoja :
<?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')) );
}
Kun tämä on tehty, voit kirjoittaa JavaScriptin, joka kutsuu palvelinpuolen. Mutta tämä on kaksiosainen vaihe: Se sisältää sekä JavaScriptin että lisää palvelinpuolen koodia.
Asiakaspuoli soittaa palvelinpuolelle
Koska palvelinpuolen kutsumisen perusteet ovat kunnossa, on mahdollista määrittää JavaScript nyt.
Ensinnäkin on napsautusten käsittelijä :
$('a[href="tools.php?page=acme-export-emails"]').on('click', function(evt){
evt.preventDefault();
_getEmailAddresses($(this));
});
Ensimmäisen soittopyynnön pitäisi näyttää tältä :
var _getEmailAddresses = function($elem) {
$.get(acme_email_export.ajax_url, {
security: acme_email_export.security,
action: 'getEmailAddresses'
}, function(response) {
if ('' === response) {
return;
}
// TODO...
});
};
Huomaa, että se käyttää aiemmin luomaamme suojausarvoa ja sitten toisen funktion nimeä, nimittäin getEmailAddresses, jota se kutsuu palvelinpuolella.
Tämä toiminto vastaa kyselyn suorittamisesta, sähköpostiosoitteiden nappaamisesta ja väliaikaisen JSON-tiedoston kirjoittamisesta, joka palautetaan käyttäjälle.
1 Hanki käyttäjien sähköpostiosoitteet
Ensinnäkin WP_User_Query mahdollistaa kaikkien käyttäjien vetämisen takaisin tiettyjen ehtojen mukaisesti .
<?php
private function getUserResults()
{
$query = new WP_User_Query(
array(
'role_in' => array('administrator','subscriber')) );
return $query->get_results();
}
Tämän esimerkin tarkoituksia varten otan selvää perusteluista.
2 Jäsennä sähköposti tuloksista
Seuraavaksi aion iteroida tuloksia ja tallentaa sähköpostiosoitteet taulukkoon (jonka muunnan lopulta JSONiksi).
<?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;
}
Huomaa, että on muita tapoja tehdä tämä. Tämä on vain yksi tapa tehdä se pienemmälle datajoukolle, mutta jos työskentelet jonkin verran suuremman kanssa, suosittelen vaihtoehtoa (joka ei kuulu tämän viestin piiriin).
Seuraavaksi
Ilmeisesti tämä on vain ensimmäinen osa siitä, kuinka tämä kaikki kytketään.
Seuraavassa postauksessa käsittelen:
- muuntaa palautetut tiedot JSON-muotoon,
- tiedoston kirjoittaminen levylle,
- ja kuinka sitoa loput yhteen JavaScriptin avulla.
Viimeinen vaihe sisältää elementin luomisen ja sitten sen napsautustapahtuman käynnistämisen, jotta käyttäjälle näytetään latausikkuna eikä varsinainen teksti selainikkunassa.