Functionaliteit plug-ins versus thema's

Er zijn veel factoren die van invloed zijn op de prestaties van uw WordPress-site. Een van de trucs die 'experts' u vaak zullen opdragen, is het vermijden van plug-ins. Ze zullen u vertellen dat het beter is om functionaliteit in uw thema te plaatsen, in plaats van een plug-in te activeren. Is dit waar?


Invoering

Als het gaat om de prestaties van uw WordPress-site, zijn er veel factoren die de algehele resultaten beïnvloeden. Deze factoren zijn onder meer hoe goed uw thema is geschreven, het aantal afbeeldingen en andere bronnen die moeten worden geladen, hoe goed uw site in de cache is opgeslagen, de kwaliteit van uw geactiveerde plug-ins en nog veel meer. Twee factoren die echter geen invloed hebben op het prestatieniveau van uw site, zijn het aantal plug-ins (ja, ik ben 100% serieus) en of er stukjes functionaliteit bestaan ​​als plug-in of als onderdeel van uw thema.

Als u snel een zoekopdracht uitvoert op Google "hoe een contactformulier toe te voegen aan WordPress", je zult waarschijnlijk een zware trend opmerken als het gaat om tutorial titels. De meeste tutorials zullen iets omvatten in de trant van"... zonder een plug-in"Deze trend, die bestaat voor tientallen tutorial-onderwerpen, doet denken aan het idee dat plug-ins slecht moeten zijn en mogelijk dat ze de prestaties van je site schaden.zonder een plugin"zo gebruikelijk in zelfstudietitels en forumberichten, veel mensen zijn gaan geloven dat het beter is, vooral voor prestaties, om stukjes functionaliteit in thema's (of die van jezelf of degene die je hebt gekocht) in plaats van te vertrouwen een plugin om het te leveren.

Het eerste antwoord dat ik op deze vaak gehoorde mening heb gegeven, is dat het volledig ongegrond is en feitelijk volkomen onjuist. Er zijn verschillende aspecten aan de reden dat dit geloof verkeerd is, en ik zal ze punt voor punt doornemen. Ik zal ook kort ingaan op de overtuiging dat minder plug-ins beter zijn, wat (meestal) ook helemaal niet klopt.


Gemeenschappelijke overtuigingen

1. Functionaliteit is beter te plaatsen in een thema dan een plug-in

Het idee achter deze overtuiging is dat plug-ins vaak de oorzaak zijn van problemen op uw site, hetzij omdat ze slecht zijn geschreven of omdat ze in strijd zijn met iets in uw thema. Als plug-ins vaak slecht zijn, is het logisch dat het beter is om functionaliteit (zoals contactformulieren) in het thema te plaatsen, rechts?

Fout, en hier is waarom:

"Of de code nu wordt geladen op punt Y of punt X, het is niet efficiënter."

Ten eerste is het enige verschil tussen de code die in een thema is geplaatst en de code die in een plug-in wordt geplaatst de uitvoeringstijd. Actieve plug-ins worden geladen en uitgevoerd vóór het huidige actieve thema, maar behalve dat, is er nul verschil in de manier waarop de code in elk wordt uitgevoerd, en ook nul verschil in termen van hoe efficiënt de code is. Zie dit Stack Exchange-bericht als je een goed schema van het CorePress-proces van WordPress wilt.

Of de code nu wordt geladen op punt Y of punt X, het is niet efficiënter.

Ten tweede, met punt nummer 1, moeten we nu vragen "hoe is een thema de betere plaats voor functionaliteit?", omdat zowel de plugin-code als de thema-code op dezelfde manier worden uitgevoerd.Het antwoord is simpel.Terwijl thema's geen voordeel hebben ten opzichte van plug-ins bij het overwegen van het plaatsen van stukjes functionaliteit, blijken plug-ins een aantal belangrijke voordelen ten opzichte van thema's te hebben Ik zal deze voordelen in een oogwenk doorlopen.

2. Code in thema's presteert beter dan in plug-ins

Ik weet echt niet waar dit vandaan komt, hoewel ik vermoed dat dit te maken heeft met het feit dat mensen vaak bang zijn voor plug-ins en vaak horen ze dat de plug-ins prestatieproblemen op een site veroorzaken. Het feit is dat dit geloof op zijn best belachelijk is. Zoals hierboven vermeld, is er nul verschil (behalve timing) in de manier waarop de plugin-code wordt uitgevoerd, in vergelijking met de themacode.

Als u een functie in een plug-in plaatst, voert u deze uit, neemt u de timing op en doet u hetzelfde met de functie, maar terwijl deze in het thema is geplaatst, zult u merken dat er geen verschil is. Ze werken allebei met dezelfde snelheid en geen van beide heeft een direct voordeel ten opzichte van de ander, in termen van prestaties.

Dit roept de vraag op, zijn thema's uiteindelijk beter dan plug-ins voor stukjes functionaliteit? Het korte antwoord, nee absoluut niet.


Sommige redenen Plug-ins zijn beter

We zouden nu moeten vragen: zijn plug-ins uiteindelijk beter voor stukjes functionaliteit dan thema's? Het korte antwoord, ja, meestal zijn ze dat zeker. Maar waarom? Welnu, er zijn een paar redenen.

  1. Het scheiden van uw code in "chunks" is een van de beste dingen die u kunt doen voor grote projecten, omdat het het hele project veel gemakkelijker te onderhouden maakt en debuggen in het geval van een probleem. Door uw afzonderlijke stukjes functionaliteit in hun eigen speciale plug-ins te plaatsen, maakt u effectief deze "chunks". Elke plug-in wordt apart onderhouden, wat (zoals u zult merken) het oneindig veel gemakkelijker maakt om problemen op te sporen.
  2. Als er iets kapot gaat, deactiveer je gewoon de plug-in. Laten we zeggen dat het contactformulier op uw site is geïntegreerd in uw thema en het breekt, waardoor de site ermee wordt afgesloten. Wat doe jij? Als u niet beschikt over de vaardigheden of weet hoe u het contactformulier kunt vervangen door een goed werkend contact, bent u in grote problemen. Aan de andere kant, als de functionaliteit wordt geleverd door een plug-in, deactiveer je eenvoudig de plug-in en breng je hem terug online zodra het probleem is verholpen, of je gaat een nieuwe zoeken.
  3. Als u ooit van thema wilt veranderen, zoals de meeste sites dit minstens één of twee keer doen, raakt u elk aangepast systeem kwijt (inclusief korte codes) omdat het nieuwe thema niet dezelfde functies heeft of wordt uitgevoerd / bouw ze anders. Als u echter al uw korte codes in een plug-in had, evenals zaken als contactformulieren, hoeft u alleen maar het nieuwe thema te uploaden en te activeren: alles werkt nog steeds net als voorheen. Is dat niet goed genoeg reden om te zeggen dat plug-ins beter zijn voor afzonderlijke stukjes functionaliteit dan thema's? Ik geloof dat het dat is.
  4. Plug-ins kunnen elk afzonderlijk worden bijgewerkt en verbeterd. Als u verbeteringen aan een thema toevoegt, moet het hele thema worden bijgewerkt. Hoe vaak heb je een gebruiker van een thema aanpassingen zien toevoegen aan de style.css of functions.php? Als ze dat hebben gedaan, is het voor hen onmogelijk om het thema bij te werken en de nieuwe verbeteringen te krijgen zonder al hun wijzigingen handmatig te hoeven verplaatsen. Dit gaat ervan uit dat ze geen kindthema hebben gemaakt, wat ze zouden moeten hebben, maar veel gebruikers niet. Wanneer de verbeteringen in een plug-in worden geplaatst, hoeft de gebruiker niets anders te doen dan de plug-in vanuit zijn Dashboard bij te werken.

Het gaat verder dan alleen deze vier redenen, maar het moet al duidelijk zijn dat de grote voordeelplug-ins over thema's beschikken voor afzonderlijke stukjes functionaliteit.

Dit brengt me nu bij de vraag of het erg is om veel verschillende plug-ins te hebben. U kunt zich waarschijnlijk voorstellen hoe snel het aantal actieve plug-ins zal worden uitgebreid als u elk belangrijk stuk functionaliteit in afzonderlijke plug-ins plaatst. Levert dit een probleem op? Hoe zit het met het bereiken van 10 plug-ins? Is dat niet veel? Hoe ongeveer 20 of 30? Is dat niet extreem?

Nee.

Tijdens WordCamp Kansas City 2012 had ik de gelegenheid om wat tijd door te brengen met Otto, die een van de topontwikkelaars is van WordPress en ook een van Matt Mullenweg's mannen uit de rechterhand. Otto doet het grootste deel van de ontwikkeling op de persoonlijke site van Matt en hij vertelde me dat er tientallen plug-ins met kleine functionaliteit op die site draaien. Elk van de plug-ins heeft specifieke taken en ze lopen allemaal perfect naast elkaar, ook al zijn er veel van.

Ik voer zelf ongeveer 50 plug-ins uit op mijn Pippin's Plugins-site.

Het punt is dat plug-ins geen problemen met de prestaties veroorzaken, simpelweg omdat het plug-ins zijn, zelfs niet met 100 of zelfs 200 actief op hetzelfde moment. Prestatieproblemen met plug-ins zijn afkomstig van slecht geschreven woorden, niet van het aantal plug-ins. U zou gemakkelijk meer prestatieproblemen kunnen veroorzaken met een enkele slecht geschreven plug-in dan met 300 eenvoudige, goed geschreven plug-ins.

Prestatieproblemen komen meestal neer op het laden van bronnen en het uitvoeren van databasequery's, dus plug-ins die veel van deze uitvoeren, hebben de neiging om de prestaties te beïnvloeden. Plug-ins die geen query's uitvoeren in de database of bronnen laden hebben geen (of bijna nul) impact op de prestaties en daarom kunt u letterlijk 300 plug-ins op uw site uitvoeren zonder impact.

Ik weet ook dat WP Candy altijd 80 of 90 actieve plug-ins draait.

De sleutel om te onthouden is dat het aantal plug-ins geen invloed heeft op de prestaties, maar alleen op de kwaliteit en het type van de impactprestaties van de plug-in.

Het tweede belangrijke punt om te onthouden is dat code in plug-ins precies hetzelfde is als code in thema's, dus haal het idee weg dat het beter is om functionaliteit in uw thema te plaatsen dan in een plug-in. Thema's zouden de visuele aspecten van uw site moeten beheersen, niet de functionaliteit.

Het laatste punt om te onthouden is dat plug-ins slecht zijn als ze slecht worden gebouwd. Plug-ins zelf zijn nooit inherent slecht; ze zijn alleen slecht omdat de code die de plug-in vormt slecht is.