Hoe WordPress actiehaken te gebruiken bij het aanpassen van het thema
WordPress-thema's voor kinderen bieden een relatief eenvoudige manier om het uiterlijk van een thema aan te passen. Als de opties van het thema u niet voldoende ontwerpkeuzes bieden, kunt u gewoon een nieuwe regel toevoegen aan het standaardstijlbladbestand van het onderliggende thema style.css. Maar wat gebeurt er als je dat ook wilt wijzig de functionaliteit van het thema? Dat is een van de gevallen waarin WordPress-acties u van dienst zijn.
WordPress is zo populair geworden, mede vanwege de hoge aanpasbaarheid. De WordPress Core is geladen met verschillende hooks waarmee ontwikkelaars de standaardfunctionaliteit kunnen aanpassen of verbeteren. Bovendien mogen we opnemen aangepaste haken in onze thema's en plug-ins naar andere ontwikkelaars helpen onze code eenvoudig aan hun behoeften aan te passen.
Over WordPress Hooks
WordPress-hooks werken enigszins op echte haken in die zin dat je de vis die je wilt op de juiste plek kunt vangen als je ze op de juiste manier gebruikt.
Jij kan verwijder een gevangen functie (u kunt bijvoorbeeld de WordPress-beheerbalk voor gebruikers met een laag niveau verwijderen), dat kan laat het intact en verbeter het met uw eigen functionaliteit (u kunt bijvoorbeeld meer menu's of widgetgebieden aan een thema toevoegen), of u kunt het overschrijven (u kunt bijvoorbeeld het gedrag van een kernfunctie wijzigen).
Er zijn twee verschillende soorten haken in WordPress: acties en filters. In deze post zullen we kijken hoe we kunnen maak gebruik van actiehaken in thema-aanpassing.
Hoe WordPress Hooks werken
Om een heel eenvoudige taal te gebruiken, acties geef dat aan er is iets gebeurd tijdens de levenscyclus van de WordPress-pagina: bepaalde delen van de site zijn geladen, bepaalde opties of instellingen zijn ingesteld, plug-ins of widgets zijn geïnitialiseerd, enzovoort.
filters zijn anders dan acties in hun aard. Ze zijn gewend om gegevens doorgeven, en wijzigen, beheren of onderscheppen voordat het wordt weergegeven op het scherm of gebruikersgegevens worden opgeslagen in de database.
Bij elke belangrijke mijlpaal in de levenscyclus van de WordPress-pagina is er een actie of a filter haak waar we kunnen voeg onze aangepaste code toe om het standaardgedrag aan te passen aan onze behoeften.
De bepaalde acties en filters die tijdens een aanvraag worden uitgevoerd, zijn afhankelijk van de vraag welke pagina door de user-agent is aangevraagd: zo zijn bijvoorbeeld in een enkel berichtverzoek hooks gerelateerd aan enkele berichten beschikbaar, maar haken gerelateerd aan andere delen van de site (bijvoorbeeld het admin-gebied) zijn niet.
Zoek actiehaken
De Action Reference van de WordPress Codex geeft een gedetailleerd overzicht van de acties die door verschillende verzoeken lopen. Het belangrijkste is dat als we een taak willen volbrengen die we nodig hebben haak op de juiste plaats, niet ervoor of erna, anders wordt de actie niet voltooid.
Dus bijvoorbeeld als we willen voeg onze Google Analytics-code toe aan een site we moeten haak onze actie vlak voordat de voettekst is geladen.
Als we het hebben over themaaanpassing, kunnen actiehaken uit twee verschillende plaatsen komen: uit WordPress Core en het thema zelf. Er zijn thema's die helemaal geen hooks hebben, maar andere bieden ontwikkelaars een aantal of veel - het is altijd de keuze van het themaauteur. Het standaard Twenty Fifteen Theme heeft slechts één actiehaak voor het aanpassen van voetteksten onder de naam 'twentyfifteen_credits'.
Als je graag door de broncode bladert, kun je ook gemakkelijk actiehaken vinden. Actiehaken worden aan de code toegevoegd met de do_action () WordPress-functie.
Als je snel op zoek bent naar de uitdrukking 'do_action' in een meer geavanceerde code-editor - zoals ik deed in Eclipse hieronder - kun je een lijst bekijken over de plekken waar je je aangepaste functionaliteit in de kern kunt haken. Ik zocht in de / Wp-includes / map, maar u kunt ook zoeken naar de / Wp-admin / map met de actiehaken gerelateerd aan het WordPress-dashboard (admin-gebied).
Het goede ding is dat de namen van de actie hooks meestal vrij duidelijk zijn, maar er is meestal een leuke opmerking in de code dat kan je meer kennis geven of de gegeven actie haakje goed is voor de reden waarom je het wilt gebruiken.
Bijvoorbeeld de codecommentaar vóór de actiehaak 'widgets_init' zegt dat “Branden nadat alle standaard WordPress-widgets zijn geregistreerd”. Als je een kijkje neemt naar de code voordat deze actie haak, kun je alle initialisatie van de standaard WP-widgets daarvoor vinden - zodat je zeker weet dat de opmerking niet loog en als je je eigen aangepaste widget wilt registreren, dit is de juiste plek.
In veel gevallen biedt de broncode ons veel meer informatie dan de Codex, dus het kan een goed idee zijn om te leren hoe je er snel in navigeert.
Voeg uw eigen acties toe
Als u uw eigen actie wilt toevoegen, moet u dat doen maak een aangepaste functie en bind deze functie aan een specifieke actiehaak door de add_action () WordPress-functie te gebruiken. Aangepaste acties toegevoegd met de functie add_action () zijn meestal geactiveerd ter plaatse wanneer de kern de juiste do_action () -functie aanroept.
Laten we een eenvoudig voorbeeld bekijken.
Hoe je de actiehaak kunt vinden die je nodig hebt
Stel dat u uw aangepaste favicon aan uw site wilt toevoegen. Eerst moet je de juiste actiehaak vinden waaraan je je eigen functionaliteit kunt koppelen.
Laten we nadenken. Als u een favicon aan een eenvoudige HTML-pagina wilde toevoegen, waar zou u het dan plaatsen? Natuurlijk moet je het in de
sectie van het HTML-bestand met de volgende markup:Dus de actiehaak die je nodig hebt, moet zijn gerelateerd aan het laden van de sectie.
(1) Open de Action Reference en zie wat deze te bieden heeft. We hebben geluk, alsof we door de acties bladeren, we kunnen er maar één vinden, wp_head, die op basis van zijn naam de mogelijkheid heeft om gerelateerd te zijn aan het laden van de
sectie.(2) Om zeker te zijn, laten we controleer de documentatie in de WordPress Codex. De Codex adviseert dat “u gebruikt deze haak door uw functie echo-uitvoer naar de browser te laten uitvoeren”, dus op dit moment lijkt het perfect voor ons. Maar laten we het in de broncode controleren.
(3) Omdat deze haak niet gerelateerd is aan het beheerdersgedeelte, moeten we onze zoekopdracht uitvoeren in de / Wp-includes / map. Als we naar het woord 'wp-head' zoeken, zullen we veel resultaten krijgen, omdat deze specifieke actie vaak door WP Core wordt gebruikt.
We moeten zoeken naar de plek waar het wordt gedefinieerd, dus zoek naar de uitdrukking do_action ('wp_head'. Merk op dat we de haakjes niet hebben voltooid, omdat we nog niet zeker kunnen zijn of deze actie parameters heeft of niet.
Eclipse retourneert slechts één resultaat dat kan worden gevonden in de /wp-includes/general-template.php het dossier. De opmerking voor de actie haak definitie zegt dat het “drukt scripts of gegevens af in de head-tag aan de voorkant”, dus nu kunnen we dood zijn - dat is zeker wp_head is de actiehaak die we nodig hebben.
Controleren op parameters
Wanneer u uw eigen acties toevoegt, moet u ook zeker weten of de haak die u wilt gebruiken, parameters aanneemt of niet. Je kunt dit eenvoudig achterhalen door te kijken naar de functie do_action ().
De syntaxis van de functie do_action () is de volgende:
do_action ('naam_of_action' [, $ parameter1, $ parameter2, ...])
Alleen de naam van de actie is vereist, de parameters zijn optioneel. Als u argumenten vindt in de relevante aanroep van de functie do_action (), moet u dit doen neem ze op in de declaratie van de aangepaste functie die u maakt.
Als u er geen vindt, moet uw aangepaste functie zonder argumenten werken. In de do_action () -definitie van de actie hook wp_head zijn er geen parameters.
Laten we het vergelijken met een actiehaak die een parameter aanneemt. De actiehaak 'wp_register_sidebar_widget' neemt één parameter in beslag die u altijd moet doorgeven aan de aangepaste functie die u aan de haak koppelt.
Laten we het verschil in de do_action () -syntaxis van de twee gevallen bekijken:
do_action ('wp_head'); do_action ('wp_register_sidebar_widget', $ widget);
In het eerste geval is er geen parameter, dus de aangepaste functie gebruikt de volgende syntaxis:
function my_function_without_parameters () ...
In het tweede geval is er één parameter die u altijd als argument moet doorgeven aan de declaratie van uw aangepaste functie:
function my_function_with_parameters ($ widget) ...
Hoe u uw persoonlijke functie kunt inhaken
Nu weten we alles wat we nodig hebben. Laten we onze aangepaste functie maken die een favicon op onze site zal weergeven.
Maak eerst een nieuwe functie zonder enige argumenten en bind deze vervolgens aan de actie hook wp_head met behulp van de add_action () WordPress-functie.
function custom_add_favicon () echo ''; add_action ('wp_head', 'custom_add_favicon');
Je moet geef de naam door van de actiehaak naar de add_action () -functie als eerste argument, dan moet je dat doen voeg de naam van uw aangepaste functie toe.
Dit zijn de twee vereiste parameters van add_action (). Het heeft ook twee optionele parameters, prioriteit en aanvaarde argumenten. Laten we kijken hoe we deze kunnen gebruiken.
Definieer prioriteiten
Het gebeurt in veel gevallen dat er meer dan één actie gebonden is aan dezelfde haak. Zo welke eerst zal worden uitgevoerd? Dit is waar we de kunnen gebruiken $ priority optionele parameter van de functie add_action ().
We voegen de prioriteit toe als een positief geheel getal, de standaardwaarde is 10. Als we willen dat een actie voortijdig wordt uitgevoerd, geven we deze een lagere waarde, als we deze later willen uitvoeren, geven we deze een hogere waarde.
Dus als we denken dat de favicon er vroeg moet zijn, kunnen we onze vorige add_action () -oproep op de volgende manier verbeteren:
add_action ('wp_head', 'custom_add_favicon', 5);
Houd er rekening mee dat de prioriteiten altijd moeten zijn ingesteld ten opzichte van de andere aangepaste functies die dezelfde actiehaak gebruiken.
Voeg het aantal geaccepteerde argumenten toe
U moet het aantal geaccepteerde argumenten toevoegen voor het geval u een actiehaak gebruikt waarvoor parameters nodig zijn. Laten we het voorbeeld bekijken dat we eerder hebben gebruikt.
De actiehaak 'wp_register_sidebar_widget' neemt één parameter in beslag, dus wanneer we onze aangepaste functie aan deze hook koppelen, moeten we dit ook opnemen als een argument wanneer we de add_action () -functie aanroepen.
Onze code ziet er in dit geval als volgt uit:
function my_sidebar_widget_function ($ widget) // Your code add_action ('wp_register_sidebar_widget', 'my_sidebar_widget_function', 10, 1);
Merk op dat we dat moeten doen voeg ook de prioriteit toe (we hebben hier de standaard 10 gekozen) om ervoor te zorgen dat WordPress weet wat elke parameter betekent. Als we de prioriteit weglaten, kan WordPress veronderstellen dat 1 de prioriteit is wat niet waar is, omdat het het aantal geaccepteerde argumenten aangeeft.
Conclusie
Je kunt veel experimenten met actiehaken maken in themaaanpassing. U kunt bijvoorbeeld uw aangepaste scripts (JS) en stijlen (CSS) toevoegen met de actiehaak wp_enqueue_scripts, of uw Google Analytics-code met de actie hookup wp_footer.
Dat kun je niet alleen voeg je eigen acties toe, maar je kunt ook verwijder complete functionaliteiten van de kern WordPress met het gebruik van de remove_action () -functie die dezelfde logica gebruikt als add_action ().
Als u een auteur van een thema bent en u een uitrekbaar thema wilt maken, kan het een goed idee zijn om dit te doen voeg uw eigen aangepaste actiehaken toe aan de juiste sjabloonbestanden met de functie do_action ().
Als je dat wilt, denk goed na over parameters die andere ontwikkelaars wie zal jouw thema gebruiken zullen moeten doorgeven als argumenten wanneer ze hun aangepaste functionaliteiten willen inhaken.
Let bij het ontwerpen van de locaties van de aangepaste actiehaken van uw thema niet op dit heeft niet veel zin om aangepaste themahaken op te nemen op dezelfde plaatsen waar de WordPress Core zelf zijn eigen haken heeft.