Crearea de e-mailuri cu comentarii personalizate înțelegerea API-ului

Când vine vorba de a lucra cu e-mail-uri în WordPress, majoritatea utilizatorilor sunt familiarizați cu caracteristicile de bază și / sau notificări.

În mod specific, suntem obișnuiți să vedem e-mailuri pentru:

  • Înregistrări de utilizatori
  • Memento-uri de parolă
  • Notificări privind comentariile
  • … si asa mai departe.

Când vine vorba de construirea de teme mai avansate - sau chiar aplicații - nu este neobișnuit să externalizăm funcționalitatea de e-mail pentru a oferi o experiență mai bună utilizatorilor noștri.

Asta înseamnă că dacă suntem merge pentru a le trimite prin e-mail, atunci am dori să facem e-mailul cât mai bine posibil. De obicei, acest lucru presupune includerea unui brand consecvent, a unui aspect mai flexibil și a unui număr mai mare de elemente șablon.

Pentru anumite e-mailuri, acest lucru are un sens în special atunci când vine vorba de mesaje binevenite, buletine de știri și lucruri similare.

Dar dacă doriți să oferiți o experiență consistentă pe site-ul dvs. de la modul în care se pare, cum ar fi modul în care apar notificările de e-mail cu notificări, puteți face acest lucru cu API-ul WordPress nativ.

Astfel, în această serie din două părți, vom examina API-ul pentru a personaliza e-mailurile de moderare a comentariilor și de notificare a comentariilor.

În prima parte a seriei, vom examina funcția responsabilă de trimiterea e-mailului și a cârligelor pe care le oferă. Vom examina capabilitățile cârligului și apoi vom analiza modul în care funcționează întregul proces.

După aceea, vom termina seria luând în considerare un exemplu practic despre modul în care putem personaliza complet e-mailul de notificare a comentariilor pentru a se potrivi nevoilor noastre.


Funcția și cârligele

Funcția care este responsabilă pentru trimiterea de e-mailuri de notificare a comentariilor este funcția wp_notify_postautor.

La momentul redactării acestui articol, documentația pentru această funcție este puțin slabă. Deși descrie în mod corespunzător ceea ce acceptă funcția și ceea ce se întoarce, descrierea acesteia este un pic neclară.

Scrie:

Această funcție poate fi înlocuită prin pluginuri. Dacă pluginurile nu redefinesc aceste funcții, atunci acestea vor fi folosite în schimb.

Sanitizează o adresă URL pentru o redirecționare.

În prezent, cele două cele mai importante etape ale documentației sunt următoarele:

  • "Funcția poate fi înlocuită prin pluginuri".
  • "Sanitizează o adresă URL pentru o redirecționare."

Poate că cea mai critică parte a documentației este că funcția poate fi înlocuită cu en-gros prin pluginuri; cu toate acestea, funcția oferă, de asemenea, mai multe filtre la care ne putem conecta pentru a manipula datele.

De fapt, acest lucru aduce o strategie importantă în ceea ce privește dezvoltarea de proiecte open source.

O strategie pentru dezvoltarea open source

Unul dintre aspectele cele mai puternice ale dezvoltării open source este însăși natura sa: că este o sursă deschisă.

Cazul în cauză: când documentația vă lasă ceva de dorit, atunci cel mai bun lucru este să deschideți codul sursă și să examinați exact ce se întâmplă.

Pentru a face acest lucru, este o simplă chestiune de localizare a funcției în aplicația de bază. Puteți face acest lucru prin IDE sau prin navigarea pe WordPress Trac.

Cu toate acestea, în sensul acestui post, funcția în cauză este situată în wp-includes / pluggable.php.

Odată ce l-am găsit, putem începe să găsim care aspecte ale plugin-ului sunt suprascriptibile prin plugin-uri.


Capacitățile sale

Rețineți că o parte din ceea ce face WordPress atât de puternic este sistemul său de cârlig. Rețineți dintr-un post anterior că există două tipuri de cârlige: acțiuni și filtre.

  • Acțiunile sunt evenimente care se declanșează în ciclul de viață al paginii WordPress atunci când au apărut anumite lucruri.
  • Filtrele sunt funcții care sunt în primul rând responsabile pentru interceptarea, gestionarea și returnarea datelor înainte de a le transmite browserului.

Pentru că vrem să modificăm conținutul și / sau stilul unui e-mail, atunci căutăm o funcționalitate specială pentru redarea conținutului unui e-mail. Prin urmare, trebuie să căutăm un filtru.

Și din moment ce căutăm o funcționalitate specială pentru redarea conținutului pentru un e-mail, atunci trebuie să căutăm un filtru.

Cu toate acestea, căutăm un apel (sau apeluri) către apply_filters iar această funcție oferă trei:

  • $ notify_message = apply_filters ('comment_notification_text', $ notify_message, $ comment_id);
  • $ subject = apply_filters ('comment_notification_subject', $ subiect, $ comment_id);
  • $ message_headers = apply_filters ('comment_notification_headers', $ message_headers, $ comment_id);

Dar ce bun este localizarea filtrelor dacă nu știm cum să le folosim?


Cum functioneaza

În revizuirea codului de mai sus, veți vedea că WordPress filtrează datele prin intermediul a trei funcții specifice, dintre care fiecare pare relativ mai curat, drept?

  • comment_notification_text este responsabil pentru gestionarea conținutului real al e-mailului
  • comment_notification_subject gestionează linia de subiect a e-mailului
  • comment_notification_headers se ocupă de modul în care e-mailul este redat (de obicei, acesta este locul în care setăm textul simplu versus, să zicem, HTML).

Destul de ușor, nu? Desigur, aceasta este de fapt doar jumătate din ea.

În plus față de înțelegerea a ceea ce face fiecare funcție, nu merită prea mult până când nu știm cum să folosim filtrele.


Concluzie

În următorul articol, vom construi propriul plugin care oferă mesaje de e-mail cu notificări personalizate.

În mod specific, vom încerca să oferim o experiență mai consistentă cu restul site-ului, vom personaliza conținutul e-mailului și vom examina cum și de ce ar trebui să gestionăm anteturile trimise cu fiecare e-mail.

Vom folosi de asemenea și cea mai recentă temă - Twentytwelve - care este livrată cu WordPress 3.5. Între timp, continuați și configurați-vă mediul de dezvoltare, astfel încât să fiți gata să faceți următorul articol.


O notă despre documentație

Unul dintre cele mai frumoase lucruri despre dezvoltarea open source este capacitatea oricui de a contribui la proiect. Când noi, ca dezvoltatori, ne gândim să contribuim la un proiect, ne gândim adesea la contribuția la codul său de bază.

Dar un proiect cu sursă deschisă este mult mai mult: include documentație, elemente de imagine, diverse dependențe și așa mai departe.

La momentul redactării inițiale a acestei postări, documentația pentru wp_notify_postauthor a necesitat îmbunătățiri. Ca atare, am contribuit la o actualizare a Codexului în timp ce scriu această postare.

O chemare la acțiune

Dacă sunteți implicat în comunitatea WordPress în orice capacitate și sunteți capabil să contribuiți în vreun fel - chiar dacă actualizați documentația - atunci vă îndemn foarte mult să faceți acest lucru deoarece îi ajută pe mii de oameni de pe tot globul care folosesc WordPress.


Resurse

  • wp_notify_postauthor
  • WordPress Trac
  • Înțelegerea acțiunilor și a filtrelor
  • WordPress 3.5 RC3
  • Doua zeci doisprezece
Cod