De beginnershandleiding voor WordPress-acties en -filters

Als het aankomt op professionele WordPress-ontwikkeling, is het absoluut noodzakelijk dat ontwikkelaars zowel acties als filters begrijpen - dat is, het is belangrijk om WordPress-hooks te begrijpen.

Simpel gezegd, haken geven ons de mogelijkheid om WordPress via een API aan te passen, uit te breiden en te verbeteren in onze thema's, plug-ins en andere aangepaste ontwikkelingsinspanningen..

Het probleem is dat deze twee functies van WordPress - misschien wel de belangrijkste aspecten van de ontwikkeling voor het platform - ofwel veel worden miskend of volledig worden genegeerd.

In deze post gaan we de levenscyclus van WordPress-pagina bekijken, begrijpen hoe hooks werkt en bekijken we de verschillen in acties en filters, zodat we niet alleen beter worden voor thema's en / of ontwikkelaars, maar ook een dieper begrip van hoe WordPress werkt.

Notitie: Dit artikel is specifiek bedoeld voor beginners, dus als je een ervaren ontwikkelaar bent, kan dit een beetje een opfriscursus zijn; echter, als u zijn een beginner, aarzel dan niet om vragen achter te laten in het opmerkingenveld aan het einde van het bericht.


De levenscyclus van de WordPress-pagina

Voordat we daadwerkelijk over de WordPress-hooks gaan praten, is het belangrijk om te begrijpen hoe de levenscyclus van de WordPress-pagina werkt.

De levenscyclus van een pagina is niets meer dan een combinatie van de gebeurtenissen die plaatsvinden vanaf het moment dat een browser een pagina opvraagt ​​tot wanneer de server de pagina naar de browser retourneert.

Laten we bijvoorbeeld zeggen dat u een enkele pagina laadt. Dan, op een hoog niveau, zal WordPress iets als het volgende doen:

  • Kijk naar de gevraagde pagina-ID
  • Vraag de database voor de pagina op zijn ID
  • Vraag de database om alle bijbehorende gegevens (zoals categorieën, tags, afbeeldingen, enz.)
  • Zoek in de database naar de opmerkingen die eraan zijn gekoppeld
  • terugkeer allemaal van de gegevens naar de browser

De sjabloonbestanden en de aanroepen naar de API-functies zijn vervolgens verantwoordelijk voor het renderen, stileren en positioneren van de gegevens op het scherm.

Het klinkt eenvoudig, maar als je nadenkt over enkele van de meest complexe blogs die je leest, of als je zelfs maar denkt aan een deel van het werk dat je hebt gedaan, kun je beginnen te begrijpen hoe intensief dit specifieke proces kan zijn.

Dit is natuurlijk ook op het meest simplistische niveau. Dit omvat geen caching-mechanismen of een van de geavanceerde onderwerpen die anderen vaak bespreken bij het bouwen van op WordPress gebaseerde projecten.

Een populaire WordPress-ontwikkelaar Rarst - de man achter queryposts.com - heeft een relatief gedetailleerde afbeelding samengesteld die de kernbelasting van WordPress laat zien:

Do niet wees ontmoedigd als u het bovenstaande diagram niet kunt volgen. Ik heb het hier gewoon als referentie geplaatst. Het uiteindelijke doel van deze sessie is dat alle ontwikkelaars uiteindelijk het kunnen begrijpen.

Met dat gezegd, hier is het belangrijkste ding om te begrijpen over haken tijdens de levenscyclus van WordPress-pagina laden:

Terwijl WordPress zijn serie query's uitvoert en voorbereidingen treft om gegevens terug te zetten naar de browser, bekijkt het alle aangepaste hooks - dat wil zeggen, de acties en filters - die zijn geschreven en geeft de gegevens door die filters door voordat ze gegevens terugsturen naar de browser.

Op dit punt is het belangrijk haken te definiëren en te kijken naar de verschillen tussen acties en filters en hoe ze deze hele levenscyclus spelen.


Alles over haken

WordPress-hooks verwijzen naar twee dingen - acties en filters. Als je naar de Codex-artikelen over haken zou kijken, zou je niets anders zien dan een korte pagina die linkt naar de verwijzingen voor zowel acties als filters. Dat is precies hoe het zou moeten zijn, want dat is welke haken zijn.

Dus hier is hoe te denken over dit:

Hooks stellen ons in staat om letterlijk deel te nemen aan de levenscyclus van WordPress-pagina om gegevens op te halen, in te voegen of aan te passen, of ze laten ons toe om bepaalde acties achter de schermen te ondernemen.

Best cool, toch??

Maar er zijn twee dingen om dit te begrijpen:

  1. Acties zijn anders dan filters.
  2. Je kunt een haak niet zomaar in een willekeurig punt van uitvoering gooien. Er zijn momenten waarop bepaalde haken vuren en optimale tijden om van te profiteren.

Dat gezegd hebbende, laten we eerst acties en filters definiëren, dan zullen we bekijken wanneer we wat moeten ontslaan.


Actie ondernemen

Dus, wat zijn acties? De eenvoudigste definitie is deze: Acties geven aan dat er iets is gebeurd. Dat is het. Maar wat heb je aan die definitie? En hoe raken we niet zo verward met gebeurtenissen?

Hier is hoe ik het recht houd:

Acties zijn gebeurtenissen in de levenscyclus van de WordPress-pagina wanneer bepaalde dingen zijn opgetreden: bepaalde bronnen zijn geladen, bepaalde voorzieningen zijn beschikbaar en, afhankelijk van hoe vroeg de actie plaatsvond, moeten sommige dingen nog worden geladen.

Omdat we de levenscyclus van de WordPress-pagina hebben besproken, zijn acties tijdens de levensduur feitelijk bepaalde punten waarop je je eigen functionaliteit kunt introduceren.

Dit betekent dat je de mogelijkheid hebt om iets te laten gebeuren terwijl een pagina wordt geladen.

De Codex biedt een Super goed informatiebron over de acties die in WordPress zijn ingebouwd en de volgorde waarin ze worden geactiveerd. Bookmark, verwijs vaak, en leer dit.

Het is van fundamenteel belang om op bepaalde punten tijdens de uitvoering en Doing It Right ™ op WordPress te leren aansluiten.

Voorbeeld: ik zie vaak dat ontwikkelaars inhaken op de in het actie veel te vaak. Natuurlijk is er een tijd om dit te doen. Maar stel dat je iets wilde doen net voordat je de berichten kreeg. Dan is het logisch om de pre_get_posts haak in plaats van in het, rechts?

dat is waarom het belangrijk is om acties te begrijpen.


Filter alle dingen

Filters aan de andere kant zijn totaal verschillend van acties. Net als acties zijn het vergelijkbare punten die optreden tijdens de levenscyclus van de WordPress-pagina; echter, wat zij do is anders.

Zo definieer ik filters:

Filters zijn functies waarmee WordPress gegevens doorgeeft tijdens bepaalde momenten in de levenscyclus van de pagina. Ze zijn primair verantwoordelijk voor het onderscheppen, beheren en retourneren van gegevens voordat ze worden doorgegeven aan de browser of om gegevens van de browser naar de database op te slaan.

Ga er even vanuit dat een bezoeker van de site op het punt staat een bericht te laden. Van wat we begrijpen van de levenscyclus van de WordPress-pagina, gaat WordPress de database voor dat bericht bevragen en het vervolgens terugsturen naar de browser. Alvorens dat te doen, zal het de gegevens echter uitvoeren via alle filters die zijn ingesteld.

Op dit moment ondernemen de filters actie voor gegevens die aan hen worden doorgegeven. Stel dat u aan het einde van de inhoud een korte zin over de auteur wilt toevoegen. Om dit te doen, registreert u een aangepaste functie met de inhoud filter en voeg je zin aan de inhoud toe.

Hoe om dit te doen valt buiten het bestek van dit artikel, maar we proberen dit in een volgend artikel in de sessie te behandelen.

Net als met acties beschikt de Codex over een uitgebreide lijst met beschikbare filters. En op dezelfde manier, Bookmark, verwijs vaak, en leer dit.

Zodra u een goed begrip van filters hebt, kunt u beginnen met het manipuleren van het ophalen van gegevens en serialiseren door Doing It Right ™ in plaats van het omzeilen van de WordPress API. Het biedt een krachtige, zeer eenvoudige manier om gegevens te manipuleren.

dat is waarom het belangrijk is om filters te begrijpen.


Maar wanneer moet ik ... ?

Op dit punt ontstaat altijd de onvermijdelijke vraag.

Wanneer gebruik ik welke haak?

En hier is het advies dat ik normaal gesproken geef:

  • Acties gebruiken wanneer u iets aan de bestaande pagina wilt toevoegen, zoals stylesheets, JavaScript-afhankelijkheden of een e-mail verzenden wanneer een evenement is gebeurd.
  • Gebruik filters wanneer u gegevens uit de database wilt manipuleren voordat u naar de browser gaat of uit de browser komt voordat u naar de database gaat.

Dat is het! Makkelijk genoeg, hoop ik.


conclusies

Ik beveel ten zeerste aan om de volgende bronnen te beoordelen:

  • De plug-in-API die ook geweldige informatie biedt die ook in thema-ontwikkeling kan worden gebruikt.
  • De actiereferentie
  • De filterreferentie

We zijn van plan meerdere posts in de sessie te blijven gebruiken om dit artikel te vergezellen, evenals het artikel van Pippin over uitbreidbare plug-ins. Zorg er dus voor dat je op de hoogte blijft van deze sessie voor meer informatie over haken.