Înțelegerea funcțiilor Pluggable WordPress și utilizarea lor

WordPress oferă o colecție de funcții de bază numite funcții pluggable. După cum sugerează și numele, putem conecta codul personalizat la aceste funcții pentru a suprascrie și a îmbunătăți funcționalitatea acestora în conformitate cu cerințele noastre.

Puterea reală a funcțiilor pluggable vine cu capacitatea de a declara funcții personalizate și de a le face conectabile pentru alți dezvoltatori și designeri. Este o tehnică pe scară largă utilizată în extinderea funcționalității și a caracteristicilor temelor WordPress Child.

În tot acest articol vom explora conceptul de funcții pluggable și utilizarea lor.


Utilizarea funcțiilor Pluggable în WordPress Core

Funcțiile Pluggable în nucleul WordPress sunt localizate în pluggable.php fișier în interiorul wp-includes director. Puteți găsi lista completă a funcțiilor plug-in sub funcții Pluggable în Codul WordPress. În primul rând vă voi arăta o listă de funcții pluggable care pot fi utilizate în aproape orice site WordPress.

  • wp_logout - este folosit pentru a deconecta utilizatorul din sistem. Puteți efectua sarcini cum ar fi eliminarea variabilelor de sesiune personalizate și înregistrarea timpului de sesiune al utilizatorului în baza de date prin scrierea unui personalizat wp_logout funcţie.
  • wp_mail - este cea mai populară funcție pluggable a tuturor. Puteți modifica această funcție pentru a utiliza un șablon de e-mail special pentru e-mailurile dvs. sau orice alte proprietăți legate de trimiterea prin e-mail.
  • wp_new_user_notification - pot fi utilizate pentru a personaliza formatul de e-mail trimis doar după ce un nou utilizator este înregistrat în sistem.
  • auth_redirect - este utilizat pentru a redirecționa un utilizator la pagina de conectare dacă utilizatorul nu este deja conectat. Puteți utiliza această funcție pentru a afișa un mesaj utilizatorului indicând faptul că utilizatorul trebuie autentificat pentru a accesa pagina solicitată.
  • wp_password_change_notification - este folosit pentru a trimite un e-mail atunci când parola se schimbă. Puteți adăuga informații suplimentare la acest e-mail utilizând această funcție.

Acum, să vedem cum putem conecta o funcție personalizată la una dintre funcțiile de mai sus. O să folosesc wp_logout aici. Mai întâi trebuie să deschizi pluggable.php fișier și copiați conținutul wp_logout funcţie. Apoi creați o nouă funcție în fișierul dvs. cu același nume și includeți codul. Următoarea este funcția implicită pentru wp_logout:

 dacă (! function_exists ('wp_logout')) / ** * Conectați utilizatorul curent. * * @ din 2.5.0 * / funcția wp_logout () wp_clear_auth_cookie (); do_action ('wp_logout'); 

Acum, să ne uităm la versiunea suprascrisă a wp_logout funcţie:

 dacă (! function_exists ('wp_logout')) / ** * Conectați utilizatorul curent. * * @ din 2.5.0 * / funcția wp_logout () remove_sessions (); // Funcția personalizată apelați wp_clear_auth_cookie (); do_action ('wp_logout');  remove_sessions () // Eliminarea informațiilor personalizate despre sesiune și module cookie

Puteți vedea că l-am modificat wp_logout funcția în plugin-ul meu și a adăugat niște cod personalizat. Acesta este procesul pe care trebuie să-l urmați pentru a suprascrie o funcție pluggable.

Cel mai important lucru din codul de mai sus este dacă (! function_exists ('wp_logout')) linie definită în partea de sus. Această linie face ca funcția dvs. să fie conectabilă verificând dacă este apelată o funcție wp_logout există și încarcă funcția personalizată. Altfel se va încărca funcția implicită în pluggable.php.

S-ar putea să vă întrebați de ce funcția din plugin este chemată în locul celei implicite, chiar dacă ambele funcții sunt prefixate cu function_exists ( 'wp_logout') condiție. Aceasta se datorează ordinului de executare a acțiunii WordPress, pe care o voi explica mai târziu.

Este posibil să omiteți function_exists Verificați funcțiile personalizate?

Da, este posibil. Dar veți avea probleme în următoarele două scenarii dacă omiteți cecul.

  • Plugin activare - Când suprascrieți o funcție pluggable în interiorul unui plugin fără a verifica și încercați să activați funcția, va genera o eroare care menționează "Nu se poate redeclora wp_logout ()"Dacă eliminați cecul după activare, acesta va funcționa corect.
  • Funcția duplicat într-un alt plugin - Există posibilitatea ca alt scriitor de pluginuri să înlocuiască aceeași funcție fără verificarea condiției. În astfel de cazuri, va exista un conflict deoarece ambele funcții vor fi în același nume și, prin urmare, vor genera o eroare.

Riscul aici este că oricine poate să vă depășească funcția fără cunoștință. Cred că ar trebui să aveți întotdeauna verificarea condiției înaintea funcției pentru a evita conflictele.

Acum știi cum să lucrezi cu funcții pluggable. Deci, să vedem unde putem plasa funcțiile pluggable.


Procesul de execuție a funcțiilor conectabile

Am văzut o mulțime de dezvoltatori, inclusiv funcțiile pluggable în functions.php fișier de o temă și nu obținerea rezultatelor pe care le așteaptă. Ar trebui să aveți o cunoaștere corectă a ordinii de execuție a acțiunii WordPress înainte de a crea funcții pluggable.

Puteți găsi procedura completă de executare în secțiunea Referință de acțiune în Codul WordPress. Voi extrage acțiunile necesare pentru explicațiile mele pe ecranul de mai jos.

Imaginea de mai sus prezintă procesul general de executare a acțiunii WordPress. Aceasta poate varia în funcție de tipul de funcționalitate utilizat în pluginul dvs. și aceste acțiuni pot fi numite de mai multe ori în timpul unei solicitări.

Ar trebui să vedeți în mod clar faptul că pluginurile "trebuie să utilizeze" sunt încărcate mai întâi, urmate de pluginuri active și funcții pluggable. În cele din urmă, tema este încărcată. Prin urmare, în funcție de proces putem face următoarele concluzii privind crearea funcțiilor pluggable.

  • Toate funcțiile pluggable personalizate ar trebui să fie plasate în interiorul pluginurilor, deoarece primele sunt încărcate.
  • Dacă pluginurile nu conțin funcții pluggable, se va utiliza funcția de bază implicită.
  • Nu trebuie să eliminați funcțiile de bază pluggable în fișierele tematice, deoarece temele sunt încărcate după funcțiile pluggable. Prin urmare, funcția implicită va fi utilizată.

Acum știți unde să vă puneți funcțiile conectabile. Următoarea întrebare va fi ceea ce se întâmplă atunci când două sau mai multe pluginuri suprascriu aceeași funcție de bază. Este în afara controlului dvs. de când primul plugin activat va obține preferința față de ceilalți. Deci, dacă un plugin este activat înaintea pluginului, funcția dvs. de conectare nu va fi utilizată.

Puteți vizualiza ordinea pluginului activ utilizând valoarea lui active_plugins tastați în tabelul de opțiuni WordPress.


Importanța funcțiilor Pluggable

Funcțiile suprascriptibile de tip pluggable de bază permit extinderea funcționalității implicite și, prin urmare, foarte utilă în anumite scenarii. Dar valoarea reală a funcțiilor pluggable vine atunci când vă creați propriile funcții pluggable. Aceste funcții nu vor avea nicio legătură cu funcțiile de bază.

În general, funcțiile pluggable noi sunt definite în temele WordPress pentru a extinde funcționalitatea și pentru a le permite dezvoltatorilor temelor copil să le înlocuiască. Așadar, să vedem cum putem defini funcțiile personalizabile conectabile.


Crearea funcțiilor personalizabile Pluggable

Mai întâi va trebui să creați funcția cu o verificare a existenței așa cum am făcut-o cu funcțiile de bază. Următorul cod arată o funcție de tip probabilă pentru tema dvs.:

 dacă (! function_exists ('change_header')) funcția change_header () // Cod pentru schimbarea antetului temei

Anterior am menționat să nu creez funcții pluggable în fișiere tematice din cauza dependenței cu funcțiile implicite implicite. În acest scenariu se creează noi funcții pluggable și, prin urmare, nu vor exista dependențe. Prin urmare, procesul de executare a acțiunii nu va avea un efect general.


Când să utilizați funcțiile Pluggable?

Creați teme pentru copii pentru a permite dezvoltatorilor și designerilor să extindă designul și caracteristicile temei părinte fără a schimba codul sursă al temei originale. Forma de bază de extindere poate fi asigurată prin duplicarea CSS a temei părinte în tema copilului și efectuarea personalizărilor necesare.

În afară de stilurile CSS, temele pot conține funcții utile, cum ar fi coduri scurte, șabloane de pagini și filtre personalizate, pentru a furniza elemente de design. Ca dezvoltatori de teme, trebuie să oferim capabilități maxime pentru dezvoltatorii temelor copilului. Putem folosi în mod efectiv funcțiile pluggable pentru a permite dezvoltatorilor de teme tematice să modifice aceste funcționalități.

Funcțiile Pluggable în teme sunt, de obicei, extinse de dezvoltatorii temelor copilului. Dar dezvoltatorii plugin-ului pot extinde, de asemenea, funcțiile pluggable în interiorul plugin-urilor lor. Să presupunem că ați înlocuit funcția pluggable în tema și plugin-ul copilului. În astfel de cazuri, funcțiile pluginului vor avea prioritate față de funcțiile tematice ale copilului.

Deci, asigurați-vă că pentru a converti funcțiile tematice existente la funcții pluggable atunci când este necesar pentru a permite extensibilitate maximă.


rezumat

Conceptul de funcții plug-in WordPress vă permite să extindeți funcționalitatea temelor și pluginurilor. În general, este preferabil să înlocuiți funcțiile Plug-in core din WordPress în plugin-uri și propriile funcții pluggable în teme. Asigurați-vă că aveți o înțelegere corectă a secvenței de execuție a acțiunii WordPress înainte de a crea funcții pluggable pentru a evita conflictele.

Cod