WordPress biedt een verzameling kernfuncties, inplugbare functies genaamd. Zoals de naam al doet vermoeden, kunnen we aangepaste code op deze functies aansluiten om hun functionaliteit te vervangen en verbeteren volgens onze vereisten.
De echte kracht van pluggable functies wordt geleverd met de mogelijkheid om aangepaste functies te declareren en ze pluggable te maken voor andere ontwikkelaars en ontwerpers. Het is een veel gebruikte techniek om de functionaliteit en functies van WordPress Child Themes uit te breiden.
In dit artikel gaan we het concept van inplugbare functies en hun gebruik verkennen.
Pluggable functies in de WordPress-kern bevinden zich in de pluggable.php bestand in de wp-includes directory. U vindt de volledige lijst met inplugbare functies onder Pluggable Functions in de WordPress Codex. Eerst zal ik je een lijst laten zien met pluggable functies die op bijna elke WordPress-website kunnen worden gebruikt.
wp_logout
- wordt gebruikt om de gebruiker uit het systeem te loggen. U kunt taken uitvoeren zoals het verwijderen van aangepaste sessievariabelen en het vastleggen van de tijd van de gebruikersessie naar de database door een eigen bericht te schrijven wp_logout
functie.wp_mail
- is de meest populaire pluggable functie van allemaal. U kunt deze functie aanpassen om een speciale e-mailsjabloon voor uw e-mails of andere e-mailverzendingsgerelateerde eigenschappen te gebruiken.wp_new_user_notification
- kan worden gebruikt om het formaat aan te passen van e-mails die worden verzonden vlak nadat een nieuwe gebruiker bij het systeem is geregistreerd.auth_redirect
- wordt gebruikt om een gebruiker om te leiden naar de inlogpagina als de gebruiker nog niet is aangemeld. U kunt deze functie gebruiken om een bericht weer te geven aan de gebruiker die meldt dat de gebruiker moet worden geverifieerd voor toegang tot de gevraagde pagina.wp_password_change_notification
- wordt gebruikt om een e-mail te verzenden wanneer het wachtwoord wordt gewijzigd. U kunt met deze functie aanvullende informatie toevoegen aan deze e-mail.Laten we nu kijken hoe we een aangepaste functie kunnen aansluiten op een van de bovenstaande functies. Ik zal gebruiken wp_logout
hier. Eerst moet je de. Openen pluggable.php bestand en kopieer de inhoud van de wp_logout
functie. Maak vervolgens een nieuwe functie in uw bestand met dezelfde naam en voeg de code toe. Hierna volgt de standaardfunctie voor wp_logout
:
if (! function_exists ('wp_logout')) / ** * Log de huidige gebruiker uit. * * @since 2.5.0 * / function wp_logout () wp_clear_auth_cookie (); do_action ('wp_logout');
Laten we nu kijken naar de overschreven versie van de wp_logout
functie:
if (! function_exists ('wp_logout')) / ** * Log de huidige gebruiker uit. * * @since 2.5.0 * / function wp_logout () remove_sessions (); // Aangepaste functieoproep wp_clear_auth_cookie (); do_action ('wp_logout'); function remove_sessions () // Aangepaste sessie- en cookie-informatie verwijderen
U kunt zien dat ik het wp_logout
functie in mijn plug-in en een aantal aangepaste code toegevoegd. Dit is het proces dat u moet volgen om een pluggable functie te negeren.
Het belangrijke in de bovenstaande code is de if (! function_exists ('wp_logout'))
regel bovenaan. Deze regel maakt uw functie pluggable door te controleren of een functie is aangeroepen wp_logout
bestaat en laadt de aangepaste functie. Anders wordt de standaardfunctie geladen in pluggable.php.
U vraagt zich misschien af waarom de functie in de plug-in wordt aangeroepen in plaats van de standaard, zelfs als beide functies worden voorafgegaan door de function_exists ( 'wp_logout')
staat. Dat is te wijten aan de uitvoeringsvolgorde van de actie WordPress, die ik later zal uitleggen.
function_exists
Controleer op aangepaste functies?Ja, het is mogelijk. Maar u zult problemen hebben in de volgende twee scenario's als u de controle weglaat.
Het risico hier is dat iedereen uw functie kan overnemen zonder uw medeweten. Ik denk dat je altijd de voorwaarde moet controleren voordat je de functie gebruikt om conflicten te voorkomen.
Nu weet u hoe te werken met inplugbare functies. Laten we dus eens kijken waar we de inplugbare functies kunnen plaatsen.
Ik heb veel ontwikkelaars gezien, inclusief pluggable functies in de functions.php bestand van een thema en krijgt niet de resultaten die ze verwachten. U moet goed op de hoogte zijn van de uitvoeringsvolgorde van WordPress-acties voordat u pluggable functies kunt maken.
U vindt de volledige uitvoeringsprocedure onder Action Reference in de WordPress Codex. Ik haal de nodige acties uit voor mijn uitleg in het onderstaande scherm.
De bovenstaande afbeelding toont het algemene uitvoeringsproces van de actie WordPress. Dit kan variëren afhankelijk van het type functionaliteit dat in uw plug-in wordt gebruikt en deze acties kunnen tijdens een aanvraag meerdere keren worden aangeroepen.
U moet duidelijk zien dat eerst de plug-ins "moeten gebruiken" worden geladen, gevolgd door actieve plug-ins en pluggable functies. Eindelijk is het thema geladen. Dus volgens het proces kunnen we de volgende conclusies trekken over het creëren van inplugbare functies.
Nu weet u waar u uw insteekbare functies kunt plaatsen. De volgende vraag is wat er gebeurt als twee of meer plug-ins dezelfde kernfunctie opheffen. Het is buiten uw controle, omdat de eerste geactiveerde plug-in de voorkeur zal krijgen boven andere. Dus als een andere plug-in is geactiveerd vóór uw plug-in, zal uw pluggable functie niet worden gebruikt.
U kunt de actieve plug-in volgorde bekijken met behulp van de waarde van de active_plugins
toets in de tabel met WordPress-opties.
Door kern pluggable functies op te heffen, kunnen we de standaardfunctionaliteit uitbreiden en dus zeer nuttig zijn in bepaalde scenario's. Maar de echte waarde van pluggable functies komt pas als u uw eigen inplugbare functies maakt. Deze functies hebben geen relatie met de kernfuncties.
Over het algemeen worden er nieuwe pluggable functies gedefinieerd in uw WordPress-thema's om de functionaliteit uit te breiden en ontwikkelaars van het kinderthema toe te staan deze te overschrijven. Laten we dus kijken hoe we aangepaste plugbare functies kunnen definiëren.
Eerst moet je de functie maken met een bestaancontrole, zoals we deden met kernfuncties. De volgende code toont een voorbeeld van een insteekbare functie voor uw thema:
if (! function_exists ('change_header')) function change_header () // Code voor het wijzigen van de themakop
Eerder zei ik om geen pluggable functies te maken in themabestanden vanwege de afhankelijkheid van standaard pluggable functies. In dit scenario maken we nieuwe pluggable functies en daarom zijn er geen afhankelijkheden. Dus het actie-uitvoeringsproces zal in het algemeen geen effect hebben.
We maken kindthema's waarmee ontwikkelaars en ontwerpers het ontwerp en de kenmerken van het bovenliggende thema kunnen uitbreiden zonder de broncode van het oorspronkelijke thema te wijzigen. De basisvorm voor verlengen kan worden geboden door de CSS van het bovenliggende thema in het onderliggende thema te dupliceren en de nodige aanpassingen te maken.
Naast CSS-stijlen kunnen thema's handige functies bevatten zoals shortcodes, paginasjablonen en aangepaste filters om ontwerpelementen te bieden. Als thema-ontwikkelaars moeten we maximale mogelijkheden bieden voor ontwikkelaars van het kinderthema. We kunnen plug-in-functies effectief gebruiken om ontwikkelaars van het kinderthema toe te staan deze functionaliteiten aan te passen.
Pluggable functies in thema's worden meestal uitgebreid door ontwikkelaars van het kinderthema. Maar ontwikkelaars van plug-ins kunnen ook de pluggable functies binnen hun plug-ins uitbreiden. Stel dat u de pluggable-functie hebt overschreven in zowel het kindthema als de plug-in. In dergelijke gevallen hebben plugin-functies voorrang op onderliggende themafuncties.Zorg er dus voor dat u uw bestaande themafuncties converteert naar inplugbare functies als dat nodig is om een maximale uitbreidbaarheid mogelijk te maken.
Met het WordPress pluggable-functiesconcept kunt u de functionaliteit van uw thema's en plug-ins uitbreiden. Over het algemeen heeft het de voorkeur om WordPress plug-in kernfuncties in plug-ins en uw eigen plugbare functies in thema's te vervangen. Zorg ervoor dat u de bewerkingsvolgorde van WordPress-acties goed begrijpt voordat u pluggable functies maakt om conflicten te voorkomen.