Funcționalitate Pluginuri vs. Teme

Există o mulțime de factori care influențează performanța pe site-ul dvs. WordPress, iar unul dintre trucurile pe care "experții" vă vor spune adesea să faceți este să evitați pluginurile. Ei vă vor spune că este mai bine să plasați funcționalitatea în interiorul temei, în loc să activați un plugin. Este adevărat?


Introducere

Când vine vorba de performanța site-ului dvs. WordPress, există o mulțime de factori care influențează rezultatele globale. Acești factori includ cât de bine este scrisă tema dvs., numărul de imagini și alte resurse care trebuie încărcate, cât de bine este stocat site-ul dvs., calitatea pluginurilor dvs. activate și multe altele. Cu toate acestea, doi factori care au un impact zero asupra nivelului de performanță al site-ului dvs. sunt numărul de plugin-uri (da, sunt 100% grav) și dacă există funcții ca plugin sau parte din tema dvs..

Dacă efectuați o căutare rapidă pe Google pentru "cum să adăugați un formular de contact în WordPress", veți observa, probabil, o tendință grea atunci când vine vorba de titluri tutorial.Mosturile de tutoriale va include ceva de-a lungul liniilor de"... fără un plugin"Această tendință, care există pentru zeci de subiecte tutorial, aduce în minte ideea că plug-in-urile trebuie să fie rău și, eventual, că ele afectează performanța site-ului dvs. Cuvintele"fără un plugin"atât de obișnuit în titlurile tutorialului, cât și de pe forumuri, mulți oameni au ajuns să creadă că este mai bine, în special pentru performanță, să includă bucăți de funcționalitate în interiorul temelor (fie dvs. sau una pe care le-ați cumpărat), decât să vă bazați pe un plugin pentru a le furniza.

Primul răspuns pe care îl am la această credință generală este că este complet nefondat și, de fapt, complet incorect. Există mai multe aspecte pentru motivul că această credință este greșită și voi trece prin ele punct cu punct. De asemenea, voi contacta pe scurt credința că mai puține pluginuri sunt mai bune, care este (de obicei) complet incorectă.


Credințe comune

1. Funcționalitatea este mai bine plasată într-o temă decât un plugin

Ideea din spatele acestei credințe este că pluginurile sunt adesea sursa problemelor de pe site-ul dvs., fie pentru că sunt prost redactate, fie că sunt în conflict cu ceva din tema dvs. Dacă pluginurile sunt deseori rău, atunci are sens că este mai bine să se plaseze funcționalitatea (cum ar fi formularele de contact) în interiorul temei,?

Greșit, iată de ce:

"Dacă codul este încărcat la punctul Y sau la punctul X, acesta nu este mai eficient."

În primul rând, singura diferență dintre codul plasat într-o temă și codul plasat într-un plugin este timpul de execuție. Pluginurile active sunt încărcate și executate înainte de tema activă în prezent, dar în afară de aceasta, există o diferență zero în modul în care codul conținut în fiecare este executat și, de asemenea, diferența zero în ceea ce privește eficiența codului. Dacă doriți o diagramă excelentă a procesului de încărcare de bază WordPress, consultați acest post Stack Exchange.

Indiferent dacă codul este încărcat la punctul Y sau la punctul X, acesta nu este mai eficient.

În al doilea rând, cu numărul 1, trebuie să ne întrebăm "cum este o temă locul mai bun pentru funcționalitate?", deoarece atât codul de plugin, cât și codul de temă sunt executate în același mod Răspunsul este simplu În timp ce temele au beneficii zero față de plugin-uri atunci când se analizează locul unde se plasează bucăți de funcționalitate, se pare că pluginurile au câteva avantaje semnificative față de teme Voi trece prin aceste avantaje într-un moment.

2. Codul în Teme se comportă mai bine decât în ​​Plugin-uri

Chiar nu știu de unde provine acest lucru, deși bănuiesc că are legătură cu faptul că oamenii sunt adesea speriați de pluginuri și au auzit frecvent că pluginurile provoacă probleme de performanță pe un site. Faptul este că această credință este, în cel mai bun caz, absurdă. După cum sa menționat mai sus, există o diferență zero (cu excepția calendarului) în modul în care se execută codul de plugin, în comparație cu codul temei.

Dacă plasați o funcție într-un plugin, executați-o, înregistrați calendarul și apoi faceți același lucru cu funcția, dar în timp ce acesta este plasat în temă, veți observa că există o diferență zero. Ambele se execută cu aceeași viteză și nici nu au nici un avantaj direct față de celălalt, în termeni de performanță.

Acest lucru aduce întrebarea atunci, sunt temele în cele din urmă mai bune decât pluginurile pentru bucăți de funcționalitate? Răspunsul scurt, nu, absolut nu.


Unele pluginuri pentru motive sunt mai bune

Ar trebui să întrebăm acum că pluginurile sunt în cele din urmă mai bune pentru bucăți de funcționalitate decât teme? Răspunsul scurt, da, cele mai multe ori sunt cu siguranță. Dar de ce? Ei bine, există câteva motive.

  1. Separarea codului dvs. în "bucăți" este unul dintre cele mai bune lucruri pe care le puteți face pentru proiectele mari, deoarece face întregul proiect mult mai ușor de întreținut și depanare în cazul unei probleme. Prin plasarea pieselor separate de funcționalitate în propriile plugin-uri dedicate, creați eficient aceste "bucăți". Fiecare plugin este menținut separat, ceea ce (așa cum veți găsi) îl poate face infinit mai ușor pentru a identifica problemele.
  2. Dacă se rupe ceva, pur și simplu dezactivați pluginul. Să presupunem că formularul de contact de pe site-ul dvs. este integrat în tema dvs. și se rupe, aducerea site-ului în jos cu ea. Ce faci? Dacă nu aveți abilitățile sau știți cum să înlocuiți formularul de contact cu unul funcțional, aveți probleme mari. Pe de altă parte, dacă funcția este furnizată de un plugin, pur și simplu dezactivați plugin-ul și aduceți-l înapoi online, după ce problema este rezolvată sau dacă găsiți una nouă.
  3. Dacă doriți vreodată să schimbați teme, deoarece majoritatea site-urilor vor face cel puțin o dată sau de două ori, veți pierde fiecare funcționalitate personalizată pe care o aveți (inclusiv coduri scurte) deoarece noua temă fie nu va avea aceleași funcții, fie va executa / construi-le diferit. Dacă, totuși, ați avut toate codurile scurte din interiorul unui plugin, precum și chestii precum formularele de contact, tot ce trebuie să faceți este să încărcați noua temă și să o activați: totul va funcționa la fel ca înainte. Nu este chiar acolo un motiv suficient de bun pentru a spune că pluginurile sunt mai bune pentru piese separate de funcționalitate decât temele? Cred că este.
  4. Pluginurile pot fi actualizate și îmbunătățite separat. Dacă adăugați îmbunătățiri la o temă, atunci întreaga temă trebuie actualizată. De câte ori ați văzut un utilizator al unei teme, adăugați personalizări la style.css sau functions.php? Dacă au făcut acest lucru, este imposibil ca aceștia să actualizeze tema și să obțină noile îmbunătățiri fără a le mișca manual toate schimbările. Aceasta presupune că nu au creat o temă a copiilor, pe care ar trebui să o aibă, dar mulți utilizatori nu o fac. Când îmbunătățirile sunt plasate într-un plugin, utilizatorul nu trebuie decât să actualizeze pluginul din tabloul de bord.

Aceasta merge mai departe decât doar aceste patru motive, dar ar trebui să fie deja clar avantajul imens pe care au pluginurile pentru teme detașate de funcționalitate.

Acest lucru mă aduce acum la întrebarea dacă este un lucru rău să aveți foarte multe pluginuri diferite. Vă puteți imagina cât de repede se va extinde numărul de plugin-uri active dacă introduceți fiecare bucată de funcționalitate majoră în plugin-uri separate. Aceasta provoacă o problemă? Ce zici de când ai ajuns la 10 pluginuri? Nu este așa de mult? Ce zici de 20 sau 30? Nu este așa de extremă?

Nu.

În timpul programului WordCamp Kansas City 2012, am avut ocazia să petrec ceva timp vorbind cu Otto, unul dintre cei mai importanți dezvoltatori pentru WordPress și unul dintre bărbații din dreapta lui Matt Mullenweg. Otto face cea mai mare parte a dezvoltării pe site-ul personal al lui Matt și mi-a spus că există zeci de pluginuri de funcționalitate mică care rulează pe acest site. Fiecare dintre pluginuri are sarcini specifice și toate funcționează perfect unul lângă celălalt, chiar dacă există multe dintre ele.

Eu personal rulez aproximativ 50 de plugin-uri pe site-ul Plugins-ului meu de pe Pippin.

Ideea este că pluginurile nu provoacă probleme de performanță doar pentru că sunt pluginuri, nici măcar 100 sau chiar 200 active în același timp. Problemele de performanță cu plugin-uri provin de la cele care sunt prost scrise, nu de numărul de plugin-uri. S-ar putea să provocați cu ușurință mai multe probleme de performanță cu un singur plugin prost scris decât cu 300 de plugin-uri simple și bine scrise.

Problemele de performanță provin, de obicei, la încărcarea resurselor și efectuarea interogărilor bazei de date, astfel încât pluginurile care fac multe dintre acestea tind să influențeze performanța. Pluginurile care nu efectuează interogări în baza de date sau resursele de încărcare au un impact zero (sau foarte aproape de zero) asupra performanței și de aceea puteți rula literalmente 300 de pluginuri pe site-ul dvs. fără impact.

De asemenea, știu că WP Candy rulează peste 80 sau 90 de plugin-uri active în orice moment.

Cheia care trebuie amintită este că numărul de pluginuri are un impact zero asupra performanței, ci doar calitatea și tipul de performanță a impactului pluginului.

Cel de-al doilea punct cheie care trebuie amintit este faptul că codul în plugin-uri rulează exact la fel ca și codul în teme, deci eliminați ideea că este mai bine să plasați funcționalitatea în tema dvs. decât un plugin. Temele trebuie să controleze aspectele vizuale ale site-ului dvs., nu funcționalitatea.

Ultimul lucru pe care trebuie să-l amintiți este că plugin-urile sunt doar rele atunci când sunt construite prost. Plugin-urile nu sunt niciodată rău inerent; acestea sunt doar rele deoarece codul care compune plugin-ul este rău.

Cod