Crearea de petiții minunate în interiorul postărilor dvs.

WordPress este o mare platformă multi-scop. Puteți crea multe site-uri web cu multe scopuri diferite: un site web corporativ, o prezentare de fotografie, un portal de știri, un site de restaurant cu meniuri interactive ... Oh, și bloguri, desigur. Puteți să faceți blog cu WordPress. Am uitat de asta.

În mod ciudat, organizațiile non-profit tind să ignore această flexibilitate și să profite de ea. În acest tutorial, vom arăta cum să creați un script de petiție simplu pentru a demonstra modul în care o organizație poate beneficia de WordPress.


Ce construim, exact?

Sunt un fan mare de coduri scurte (după cum puteți vedea din postările mele anterioare), așa că vom face o grămadă de coduri scurte și câteva funcții utile pentru utilizarea codurilor scurte. Vom lua toate acestea împreună într-un fișier numit petition.php și utilizați-l ca un plugin WordPress.


Funcțiile Helper

De când le vom folosi în interiorul codurilor scurte, am crezut că ar fi mai bine să le creezi și să le explici mai întâi.

O funcție de validare a e-mailului de bază

Dacă utilizați PHP5 pe serverul dvs., vom folosi validatorii de e-mail încorporați pentru funcția noastră:

 // funcția de validare a adresei de poștă electronică validate_email ($ email) if ($ email == ") return false; altceva return filter_var ($ email, FILTER_VALIDATE_EMAIL);

Și dacă utilizați ceva antic ca PHP4, puteți utiliza o funcție diferită care utilizează expresii regulate:

 // funcția de validare a adresei de poștă electronică validate_email ($ email) if ($ email == ") return false; altceva $ eregi = preg_replace ('/([-z0-9_.-]+)' ([a-z0-9 .-] +) 2,255 '' '([az] +) 2,10 / i', ", $ email);  returnare goală ($ eregi)? adevarat fals; 

Vă rugăm să rețineți: Nu puteți folosi ambele!

Funcția de trimitere a intrărilor

Am putea crea și utiliza o altă tabelă de baze de date pentru a conține observațiile petițiilor, dar nu cred că este o practică bună. Și hei, ce e în neregulă cu câmpurile personalizate?

 // trimiteți semnatarul cu o cheie meta "petition_submission" la postarea funcției post ($ name, $ email, $ date) global $ post; $ array = array ('nume' => $ nume, 'email' => email, 'data' => $ data); $ petition_meta = serializa ($ array); add_post_meta ($ post-> ID, 'petition_submission', $ petition_meta); return true; 

După cum puteți citi din cod;

  • Am luat-o numele $, $ e-mail și data de $ variabile în funcție (de la codul scurt la care vom ajunge într-un minut)
  • Introduceți cele trei variabile împreună creând o matrice și serializând-o
  • Și a salvat datele ca un câmp particular numit 'Petition_submission'

Simplu, nu? Acum putem ajunge la cam greu de- parte.

Funcția de preluare a înregistrărilor

Acum putem salva observațiile, dar cum le vom obține și vom face lucruri cu ei? Iată cum:

 // preluați înregistrările din funcția post get_the_submissions ($ number = 5) $ petition_meta = get_post_custom_values ​​('petition_submission'); dacă ($ petition_meta) $ output = array_slice ($ petition_meta, $ number * -1); retur array_reverse (ieșire $); 

Amintiți-vă când am spus că va fi cam greu de-? Am mintit:

  • Am atribuit valorile metazelor post cu "petition_submission'pentru o variabilă de matrice
  • Apoi am ajuns număr $ (5 în mod implicit) de depuneri de la sfârșitul matricei (observați -1)
  • Și am revenit inversat listă a acelei matrice de felii pentru ao ordona cel mai nou la cel mai vechi

Extra: Selectorii CSS de folosit

Vom folosi câțiva selectori CSS în cod, așa că puneți-i în lista dvs. style.css fișier al temei dvs.:

 #petition_form  #petition_form font-weight: bold; font-size: mai mare; linia-înălțime: 150%;  #petition_form input display: block; margine: 5px 0; padding: 3px;  #petition_name width: 200px;  #petition_email width: 200px;  #petition_submit padding: 5px;  .petition_success culoare: # 693;  .petition_error culoare: # A00;  .petition_list style-list: none; marja: 0; umplutura: 0;  .petition_list li imagine-imagine: nimic! important;  .petition_list span afișare: inline-block; lățime: 45%; umplutură: 1%; marja: 1%; fundal-culoare: #FAFAFA;  .submission_name  .submission_date font-style: italic; culoare: # 888; 

Nu ezitați să editați valorile implicite ale proprietăților :)


Scurtăturile

Am terminat funcțiile de ajutor și codul CSS. Acum, să ajungem la partea distractivă - codurile scurte!

Am putea face doar cu un scurt cod scurt pentru a atașa formularul, a lista intrările și a arăta numărul de înscrieri, dar ... de ce ucide toate distracțiile? În plus, codurile scurte separate pentru aceste trei elemente ne-ar elibera să le folosim oriunde vrem în conținutul nostru.

Ți-am spus cum dragoste numerele scurte?

Codul scurt pentru formularul de petiționare

Această funcție este una lungă, așa că voi explica codul în interiorul codului, cu comentarii PHP:

 funcția petition_form_sc ($ atts) // extrageți extrasele parametrilor de scurtătură (shortcode_atts (array (// valoarea textului butonului submit 'submit' => 'Submit', // textul mesajului de eroare ' "Adresa dvs. de e-mail nu este validă. Vă rugăm să reintroduceți formularul cu un nume valabil și o adresă de e-mail valabilă.", // textul în care succesul a avut succes '=>' Trimiterea dvs. a fost salvată. tine! '), $ atts)); // elementele HTML ale cererii noastre de petiționare $ form = '
„; // dacă formularul este "POST" ed ... dacă ($ _SERVER ['REQUEST_METHOD'] == 'POST') // ... obține numele ... $ name = $ _POST ['petition_name']; // ... și adresa de e-mail ... $ email = $ _POST ['petition_email']; // ... și data "doar acum", cu formatul de date al opțiunilor WP. $ date = data (get_option ('date_format')); // validați mai întâi adresa de e-mail! dacă (validate_email ($ email) == true) // adresa de e-mail este validă! amintiți funcția de mai jos? depunerea ($ name, $ email, $ date); // am trimis variabilele cu funcția de trimitere (), acum imprimăm mesajul de succes FĂRĂ FORMULAR: returnați '
". $ succes. '
„; // (dacă doriți ca formularul să fie imprimat din nou după trimitere, trebuie doar să adăugați formularul $ înainte de punct și virgulă.) altfel // adresa de e-mail NU este validă! ar trebui să imprimați mesajul de eroare CU FORMULAR: returnați "
". $ eroare. '
". forma $; // și dacă formularul nu este "POST" ed (adică vizitatorul tocmai a vizitat pagina), trebuie doar să arătați formularul! altfel return $ form; add_shortcode ('petition_form', 'petition_form_sc');

Am incercat sa fiu la fel de clar cum pot fi, dar daca crezi ca am lasat ceva afara, simte-te liber sa ma intrebi comentand acest post!

Codul scurt pentru lista de depuneri

Partea "ultimele intrări" este dovadă că oamenii se alătură cauzei dvs., așa că trebuie să menționăm cel puțin un număr de observații.

Aceasta nu este o funcție scurtă, așa că voi explica din nou codul cu comentarii:

 funcția petition_list_sc ($ atts) // extrageți parametrii shortcode extract (shortcode_atts (array (// am putea seta un număr implicit, dar amintiți-vă, am făcut deja acest lucru în funcția get_the_submissions () :) 'number' => $ atts)); // obține numărul ultimelor articole trimise $ ... submissions = get_the_submissions ($ number); // ... and list 'em! $ output ='
    „; dacă ($ suplimente) foreach (trimiteri $ ca trimitere $) // neserializează datele $ signer = unserialize ($ submission); // neserializează datele ANUMOTE, nu știu de ce ... $ signer = unserialize ($ signer); // poate doriți să schimbați această parte, dar formatul implicit arată foarte bine cu CSS în acest tutorial. $ output = '
  • „; $ output = '". $ signer ['name']. '„; $ output = '". $ signer ['date']. '„; $ output = '
  • „; $ output = = '
„; returnați outputul $; add_shortcode ('petition_list', 'petition_list_sc');

Din nou, nu ezitați să întrebați ce vreți să întrebați comentând acest post.

Codul scurt pentru numărarea petiției

Aceasta este o funcție foarte mică, doar pentru a obține câte intrări sunt trimise:

 funcția petition_count_sc () $ petition_meta = get_post_custom_values ​​('petition_submission'); retur numărul ($ petition_meta);  add_shortcode ('petition_count', 'petition_count_sc');

După cum puteți vedea, aruncă câmpurile personalizate într-o matrice și o numără și returnează numărul.


Concluzie

Ar trebui să subliniez că acesta este un exemplu foarte simplu pentru a arăta organizațiilor că pot beneficia de WordPress prin utilizarea unor astfel de scripturi. Dacă vă puteți gândi la o îmbunătățire pentru acest script (sau tutorial), vă rugăm să vă împărtășiți gândurile în comentariile de mai jos. Vă mulțumim pentru lectură!

Cod