WordPress pentru dezvoltarea aplicațiilor web evenimente, acțiuni și filtre

În această serie am analizat modul în care WordPress poate fi folosit pentru a construi aplicații web.

Până în acest moment, am stabilit că WordPress este o fundație - mai degrabă decât un cadru - și am vorbit puțin despre cum trebuie să evităm încercarea de a împinge WordPress într-un alt tip de model de design decât cel de tip nativ.

În acest scop, am stabilit că WordPress folosește un model de design bazat pe evenimente și că acesta este reprezentat cel mai bine cu sistemul său de acțiuni și filtre.

Deși scopul general al acestei serii este să furnizeze un sondaj asupra modului în care WordPress poate fi folosit pentru dezvoltarea aplicațiilor web, cred că este important să aruncăm o privire la câteva exemple practice despre cât de puternic este sistemul de cârlige pentru a înțelege cum mult mai mult - ca dezvoltatori - putem personaliza WordPress pentru a se potrivi nevoilor noastre.

Deci, în acest articol, vom examina un cod care reprezintă câteva acțiuni comune care pot fi realizate utilizând cârligele WordPress, precum și unele funcționalități puțin standard.

În cele din urmă, până la sfârșitul articolului, ar trebui să aveți o înțelegere clară a motivului pentru care folosirea caracterului evenimentului WordPress este cheia în construirea de aplicații și de ce nu ar trebui să încercăm să transformăm WordPress și modelele sale subiacente în ceva pe care îl nu.


Cârlige: acțiuni și filtre

În articolul precedent, am dat două definiții - unul specific pentru acțiuni și unul specific pentru cârlige:

Acțiunile sunt evenimente din ciclul de viață al paginii WordPress atunci când au apărut anumite lucruri - anumite resurse sunt încărcate, anumite facilități sunt disponibile și, în funcție de cât de devreme a avut loc acțiunea, unele lucruri trebuie încă încărcate.

Filtrele sunt funcții pe care WordPress le transmite prin anumite puncte din ciclul de viață al paginilor. Aceștia sunt responsabili în primul rând pentru interceptarea, gestionarea și returnarea datelor înainte de a le trimite la browser sau de a salva datele din browser în baza de date.

Acest lucru este esențial în înțelegerea celor două tipuri de evenimente WordPress, deoarece vor exista momente în care doriți să preeminați un proces, să urmăriți un proces sau să manipulați informațiile înainte de al redacta pe ecran.

Cunoașterea diferenței în acțiuni și filtre este cheia în construirea de aplicații, pluginuri și teme în WordPress.

În acest scop, vom întrerupe discuția De ce WordPress poate fi folosit pentru aplicații web și poate analiza mai multe acțiuni și filtre pentru a ne asigura că toți înțelegem cum funcționează sistemul evenimentului, tipurile de lucruri pe care le putem face cu acesta și, sperăm, acestea pot fi folosite pentru a crea o experiență mai personalizată.

Acțiuni comune

În primul rând, vom examina mai multe acțiuni, fiecare dintre acestea crescând în complexitate față de cel anterior, pentru a demonstra că acțiunile puternice pot deveni.

1. Adăugarea unui fișier JavaScript la antet

Această acțiune este atât de obișnuită încât este posibilă rată printre cei mai intermediari dintre dezvoltatori. Totuși, ideea rămâne: Acesta este un exemplu de acțiune clasică WordPress folosită în aproape orice tip de temă care este acolo.

Pe scurt, acesta profită de wp_enqueue_scripts cârlig. Acest incendii în timpul secvența de încărcare pagină și vă permite să spuneți WordPress ce fișiere sursă ar trebui să includă, precum și Unde ar trebui să îl includeți (ca în, în antet sau în subsol).

funcția example_add_theme_scripts () wp_enqueue_script ('re-example-script', get_stylesheet_directory_uri () ./js/example.js ', array (' jquery '),' 1.0.0 ', FALSE);  add_action ('wp_enqueue_scripts', 're_add_theme_scripts');

E destul de ușor să înțelegi, bine?

Prindeți scenariul din tema example.js fișier din directorul JavaScript, asigurați-vă că este marcat ca fiind dependent de prima încărcare a jQuery, rețineți că este vorba de versiunea 1.0.0 a scriptului, și facem nu doriți să o încărcați în subsol.

2. Personalizați Citeste mai mult Legătură

Out-of-the-box, WordPress oferă posibilitatea de a adăuga o legătură "Citește mai mult ..." sau "Continuați să citești ..." care se realizează utilizând tag în editorul postului.

Puteți să-l stilizați folosind stiluri native, dar să spunem că doriți să adăugați un cod suplimentar care să o facă mai potrivit pentru tema dvs., să fie mai ușor de integrat cu un design receptiv sau ceva similar.

Apoi puteți utiliza următoarea acțiune:

funcția example_add_more_link_class ($ link, $ text) $ html = '
„; $ html. = '
". $ link. '
„; $ html. = '
„; returnați $ html; add_action ('the_content_more_link', 'example_add_more_link_class', 10, 2);

Observați că ne implicăm the_content_more_link care acceptă ancora și textul ancorei pentru mai multă legătură.

În cadrul funcției, vom împacheta legătura actuală în interiorul ei div container pentru a putea avea un control mai mare asupra stilului link-ului.

3. Returnați numele persoanei prin Ajax

Acest exemplu particular presupune că utilizați Ajax în proiectul dvs. și că ați configurat deja facilitățile adecvate pentru a vă asigura că puteți face cereri asincrone.

Acest lucru presupune, de asemenea, că datele trimise din partea clientului către partea de server sunt ID-ul unui utilizator pentru care vreți să-i returnați numele.

funcția example_get_user_name () $ user = null; dacă (isset ($ _GET ['user_id']) && 0 < strlen( trim( $_GET['user_id'] ) ) )  $user = get_user_by( 'id', $_GET['user_id'] ); if ( FALSE == $user )  echo $user->Nume;  altceva echo '-1';  // se termină dacă mor;  // end re_get_employee_by_name add_action ('wp_ajax_example_get_user_name', 'example_get_user_name'); add_action ('wp_ajax_nopriv_example_get_user_name', 'example_get_user_name');

Astfel, în exemplul de mai sus, verificăm mai întâi să vă asigurați că numele de utilizator este setat în $ _GET colectare și, dacă da, atunci va încerca să recupereze utilizatorul din acel cod.

În cazul în care utilizatorul există, atunci acesta va repeta primul nume al utilizatorului înapoi la client; în caz contrar, aceasta va ecou un "-1“. Acest lucru ne dă flexibilitatea de a răspunde în mod corespunzător pe partea clientului.

Filtre comune

Ca și în cazul acțiunilor menționate mai sus, vom examina mai multe filtre, dintre care fiecare va crește ușor în complexitate, astfel încât să putem vedea câteva dintre lucrurile pe care le putem face cu filtrele care ne oferă o mai mare flexibilitate în cadrul proiectelor noastre WordPress.

1. Adăugarea conținutului la un singur mesaj

Deși titlul acestei acțiuni particulare ar trebui să fie suficient de clar, să spunem că doriți să adăugați o propoziție în partea de jos a fiecărei postări pe blogul dvs., dar dvs. numai doriți să faceți acest lucru pe posturi unice.

Acest lucru se poate realiza cu următorul cod:

funcția example_append_post_content ($ content) if (is_single ()) $ html = '
„; $ html. = 'Acest conținut va apărea la sfârșitul unei postări.'; $ html. = '
„; $ content = $ html; retur $ conținut; add_filter ('the_content', 'example_append_post_content');

E destul de ușor să înțelegi, bine?

continutul filtrul transmite conținutul efectiv al mesajului la funcția de cârlig. De acolo, suntem liberi să manipulăm datele în orice mod pe care îl considerăm potrivit.

În cazul nostru, verificăm mai întâi să vedem dacă este o singură pagină. Dacă da, atunci vom adăuga a post-sufix container cu o singură propoziție, adăugați-l la conținut, apoi returnați-l.

Dacă nu este un singur mesaj, atunci conținutul va fi returnat ca normal.

2. Redirecționați utilizatorii după conectare

Un alt tip de filtru pe care doriți să-l profitați este redirecționarea utilizatorilor după ce v-ați conectat la aplicație.

De exemplu, dacă sunt administratori, ar trebui direcționați către tabloul de bord post; altfel, acestea ar trebui redirecționate către pagina de pornire a site-ului.

Pentru a realiza acest lucru, putem profita de Filtrul login_redirect:

funcția example_login_redirect ($ redirect_to, $ request, $ user) return (isset ($ user-> roles) && is_array ($ user-> roles) && in_array ('administrator', $ user-> roles))? home_url ('/ wp-admin /'): home_url ();  // end soi_login_redirect add_filter ('login_redirect', 'example_login_redirect', 10, 3);

În codul de mai sus, am introdus un filtru personalizat în login_redirect cârlig care efectuează următoarele:

  • Dacă utilizatorul este un administrator, redirecționați-l spre tabloul de bord
  • În caz contrar, direcționați-le către HOME_URL a site-ului.

Destul de usor.

Deși este un exemplu relativ simplu, ar trebui să te gândești la mai multe lucruri avansate pe care le poți face pe baza rolurilor și / sau capabilităților utilizatorului.

De exemplu, mai degrabă decât să le redirecționați către anumite aspecte ale aplicației, veți putea să le arătați diferite informații bazate, de exemplu, pe rolurile lor.

3. Personalizarea e-mailurilor

Acest exemplu special este un pic mai complicat pentru că add_filter apelurile vin în contextul unei alte funcții care are un apelant terț.

Mai precis, vom trimite un e-mail, dar dorim să ne asigurăm că am personalizat tipul de conținut, de la conținut și de la numele înainte de a trimite conținutul.

Pentru a face acest lucru, trebuie să definim mai întâi o funcție:

funcția example_exmail_user ($ input) // Cod eliminat din brevity. // presupune că mesajul $ este definit ca fiind conținutul e-mailului add_filter ('wp_mail_content_type', create_function (", 'return' text / html"; '))) add_filter (' wp_mail_from ',' example_mail_from ' ',' example_mail_from_name '), dacă (wp_mail ($ input [' email-address '],' Account was created! ', $ message))  // specificați o pagină în care să direcționați după o eroare ieșire; funcția example_mail_from ($ email) return '[email protected]'; funcția example_mail_from_name ($ name) return 'Exemplu Web App';

După aceasta, trebuie să definim funcțiile care sunt legate în filtru care sunt specificate mai sus. Și anume…

  • wp_mail_content_type
  • wp_mail_from
  • wp_mail_from_name

După cum puteți vedea, filtrele se pot complica relativ repede, dar ele sunt puternic și dacă înțelegeți ce faceți și cum se potrivesc toate piesele împreună, ca să spunem așa, atunci puteți să faceți niște lucruri uimitoare.


Doar zgâriați suprafața

Ca și în majoritatea tutorialelor și exemplelor de pe acest site, suntem doar zgârierea suprafeței a ceea ce se poate face folosind sistemul de cârlig WordPress.

Desigur, aceste exemple sunt menite să fie doar așa - exemple pentru acțiunile și filtrele puternice care pot fi atunci când vine vorba de personalizarea experienței WordPress.

Deși acest articol special și codul de exemplu sunt menite să servească drept exemplu practic pentru unele dintre lucrurile pe care le puteți face, acestea nu sunt menite a fi ghidul definitiv de lucru cu cârligele.

În schimb, acestea sunt menite să arate modul în care putem începe să profităm de ceea ce este disponibil în API-ul WordPress atunci când construim o aplicație web.


Urmeaza…

În articolul următor, vom începe să ne uităm la mai multe facilități oferite de WordPress chiar din cutie. Vom vedea cum sunt utile în construirea aplicațiilor web, cum să le mobilizeze pentru munca noastră specifică și cum pot fi utile în crearea de aplicații web.

După aceea, vom analiza câte dintre aceste funcții funcționează bine în contextul unei aplicații web și cum putem folosi cârligele pentru a personaliza în continuare comportamentul pe care îl oferă.

Cod