Förstå WordPress Pluggable Funktioner och deras användning

WordPress tillhandahåller en samling kärnfunktioner som kallas pluggable-funktioner. Som namnet antyder kan vi plugga in anpassad kod till dessa funktioner för att åsidosätta och förbättra deras funktionalitet enligt våra krav.

Den verkliga effekten av pluggbara funktioner kommer med möjligheten att deklarera anpassade funktioner och göra dem pluggbara för andra utvecklare och designers. Det är en allmänt använd teknik för att utvidga funktionaliteten och funktionerna i WordPress Child Themes.

Under hela denna artikel kommer vi att undersöka konceptet om pluggbara funktioner och deras användning.


Använda Pluggable Funktioner i WordPress Core

Pluggbara funktioner i WordPress-kärnan finns i pluggable.php filen inuti wp-includes katalogen. Du hittar den fullständiga listan över pluggbara funktioner under Pluggable Functions i WordPress Codex. Först ska jag visa dig en lista med pluggbara funktioner som kan användas på nästan varje WordPress-webbplats.

  • wp_logout - används för att logga användaren ur systemet. Du kan göra uppgifter som att ta bort anpassade sessionvariabler och spela in användarsessionstiden i databasen genom att skriva ett anpassat wp_logout fungera.
  • wp_mail - är den mest populära pluggable funktionen av dem alla. Du kan ändra den här funktionen för att använda en särskild e-postmall för dina e-postmeddelanden eller andra e-postleveransrelaterade egenskaper.
  • wp_new_user_notification - kan användas för att anpassa formatet för e-post som skickas strax efter att en ny användare är registrerad hos systemet.
  • auth_redirect - används för att omdirigera en användare till inloggningssidan om användaren inte redan är inloggad. Du kan använda den här funktionen för att visa ett meddelande till användaren som anger att användaren ska verifieras för att komma åt den begärda sidan.
  • wp_password_change_notification - Används för att skicka ett mail när lösenordet ändras. Du kan lägga till ytterligare information till det här e-postmeddelandet med den här funktionen.

Låt oss nu se hur vi kan ansluta en anpassad funktion till en av ovanstående funktioner. Jag ska använda wp_logout här. Först måste du öppna pluggable.php fil och kopiera innehållet i wp_logout fungera. Skapa sedan en ny funktion i din fil med samma namn och inkludera koden. Följande är standardfunktionen för wp_logout:

 om (! function_exists ('wp_logout')) / ** * Logga in den nuvarande användaren. * * @since 2.5.0 * / function wp_logout () wp_clear_auth_cookie (); do_action ('wp_logout'); 

Låt oss nu titta på den överdrivna versionen av wp_logout fungera:

 om (! function_exists ('wp_logout')) / ** * Logga in den nuvarande användaren. * * @since 2.5.0 * / function wp_logout () remove_sessions (); // Anpassad funktionskall wp_clear_auth_cookie (); do_action ('wp_logout');  funktion remove_sessions () // Ta bort anpassad session och cookieinformation

Du kan se att jag har ändrat wp_logout funktionen i mitt plugin och lagt till lite anpassad kod. Det här är den process du behöver följa för att åsidosätta en pluggbar funktion.

Det viktiga i ovanstående kod är om (! function_exists ('wp_logout')) linje definierad på toppen. Denna rad gör din funktion möjlig genom att kontrollera om en funktion kallas wp_logout existerar och laddar den anpassade funktionen. Annars kommer det att ladda standardfunktionen i pluggable.php.

Du kanske undrar varför funktionen i plugin kallas istället för standard en även när båda funktionerna är prefixade med function_exists ( 'wp_logout') tillstånd. Det beror på ordningsordern för WordPress, som jag kommer att förklara senare.

Är det möjligt att hoppa över function_exists Kontrollera efter anpassade funktioner?

Ja det är möjligt. Men du kommer att ha problem i följande två scenarier om du släpper ut kontrollen.

  • Plugin aktivering - När du åsidosätter en pluggbar funktion i ett plugin utan kontrollen och försöker aktivera funktionen kommer det att generera ett fel som anger "Kan inte omklara wp_logout ()". Om du tar bort kontrollen efter aktiveringen fungerar den korrekt.
  • Duplicera funktionen i ett annat plugin - Det finns en möjlighet att en annan plugin-författare överreder samma funktion utan tillståndskontrollen. I sådana fall kommer det att finnas en konflikt eftersom båda funktionerna kommer att vara i samma namn och därmed skapa ett fel.

Risken här är att någon kan åsidosätta din funktion utan din kunskap. Jag tror att du alltid ska ha tillståndskontrollen före funktionen för att undvika konflikter.

Nu vet du hur man arbetar med pluggbara funktioner. Så låt oss se var vi kan placera de pluggbara funktionerna.


Pluggbar funktionskonstruktion

Jag har sett många utvecklare inklusive pluggbara funktioner i functions.php fil av ett tema och inte få de resultat de förväntar sig. Du borde ha en ordentlig kunskap om ordningsföljd för WordPress-åtgärder innan du skapar pluggbara funktioner.

Du hittar fullständig körningsprocedur under Handlingsreferens i WordPress Codex. Jag kommer att extrahera nödvändiga åtgärder för mina förklaringar på skärmen nedan.

Ovanstående bild visar den allmänna WordPress-handlingens exekveringsprocess. Det kan variera beroende på vilken typ av funktionalitet som används i pluginet och dessa åtgärder kan ringas flera gånger under en förfrågan.

Du bör tydligt se att "måste använda" plugins laddas först, följt av aktiva plugins och pluggable funktioner. Slutligen laddas temat. Så enligt processen kan vi göra följande slutsatser om att skapa pluggbara funktioner.

  • Alla anpassade pluggbara funktioner ska placeras inuti plugins eftersom plugins laddas först.
  • Om plugins inte innehåller pluggbara funktioner, kommer standardkärnfunktionen att användas.
  • Du bör inte överdriva kärnpluggbara funktioner i dina temafiler eftersom teman laddas efter pluggarfunktioner. Därför kommer standardfunktionen att användas.

Nu vet du vart du ska sätta dina pluggbara funktioner. Nästa fråga kommer att vara vad som händer när två eller flera plugins överstyrar samma kärnfunktion. Det är bortom din kontroll eftersom den första aktiverade plugin kommer att få företräde framför andra. Så om en annan plugin är aktiverad före din plugin, kommer din pluggbar funktion inte att användas.

Du kan visa aktiva pluginordningen med värdet på active_plugins nyckel i WordPress alternativtabellen.


Betydelsen av Pluggable Funktioner

Övergripande kärnpluggbara funktioner gör att vi kan förlänga standardfunktionen och därmed mycket användbar i vissa scenarier. Men det verkliga värdet av pluggbara funktioner kommer in när du skapar egna pluggbara funktioner. Dessa funktioner har ingen relation till kärnfunktionerna.

Generellt definieras nya pluggbara funktioner i dina WordPress-teman för att utöka dess funktionalitet och låta barntemautvecklare övervinna dem. Så låt oss se hur vi kan definiera anpassade pluggbara funktioner.


Skapa anpassade pluggbara funktioner

Först måste du skapa funktionen med en existenskontroll som vi gjorde med kärnfunktioner. Följande kod visar en provpluggbar funktion för ditt tema:

 om (! function_exists ('change_header')) function change_header () // Kod för att ändra temahuvudet

Tidigare nämnde jag att inte skapa pluggbara funktioner i temafiler på grund av beroendet med standardpluggbara funktioner. I detta scenario skapar vi nya pluggbara funktioner och därmed kommer det inte att finnas några beroenden. Så verkställighetsprocessen kommer inte att ha någon effekt i allmänhet.


När ska du använda pluggbara funktioner?

Vi skapar barnteman för att tillåta utvecklare och designers att utvidga designen och funktionerna i modertemat utan att ändra källkoden för det ursprungliga temat. Den grundläggande formen av förlängning kan tillhandahållas genom att duplicera CSS i föräldragruppen inom barntemat och göra nödvändiga anpassningar.

Bortsett från CSS-format kan teman innehålla användbara funktioner som kortkoder, sidmallar och anpassade filter för att tillhandahålla designelement. Som tematillverkare behöver vi erbjuda maximal kapacitet för barntemautvecklare. Vi kan effektivt använda pluggbara funktioner så att barntemautvecklare kan ändra dessa funktioner.

Pluggbara funktioner i teman utökas vanligen av temat utvecklare av barn. Men plugin-utvecklare kan också utvidga de pluggbara funktionerna i sina plugins. Antag att du har överskridit den pluggbara funktionen i både barntema och plugin. I sådana fall kommer pluginfunktioner att ha företräde framför barntemafunktioner.

Så var noga med att konvertera dina befintliga temafunktioner till pluggbara funktioner när det behövs för att möjliggöra maximal förlängning.


Sammanfattning

WordPress Pluggable-funktioner kan du förlänga funktionaliteten för dina teman och plugins. Generellt är det bättre att åsidosätta WordPress-kärnpluggerbara funktioner i plugins och dina egna pluggbara funktioner i teman. Se till att du får en ordentlig förståelse för WordPress-åtgärderna för genomförandet innan du skapar pluggbara funktioner för att undvika konflikter.