✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

WordPress-widgets: Refactoring, del 5

26

I det föregående inlägget skapade vi ett register som kommer att användas för att lagra alla olika klasser som är ansvariga för att ge vår widget dess funktionalitet.

För att göra detta kommer det att introduceras en mängd andra klasser, men innan vi går dit måste vi lägga till registret i pluginens bootstrap (låt vara att skapa en bootstrap för pluginet).

Specifikt, här är där vi slutade:

Som nämnts tidigare i inlägget måste vi lägga till detta till pluginets bootstrap. För att göra detta måste vi dock definiera vårt eget filter så att vi enkelt kan skicka registret runt resten av pluginet (när det är dags att göra det).

Så i det här inlägget kommer vi att fokusera på att göra exakt det.

WordPress Widget Boilerplate: Refactoring, del 5

Om du har följt med serien fram till denna punkt, bör du vara i en bra position specifikt för att lägga till registret så att vi har tillgång till det genom hela pluginet.

För att göra detta förutsätter du dock att du vet hur du definierar dina filter. I WordPress använder vi åtgärder och filter hela tiden.

Grejen med dessa krokar är att de redan är definierade. Så hur definierar vi vårt filter?

Låt oss ta en titt på att göra exakt det.

1 Definiera vårt filter

Först måste vi förstå några begrepp:

  • vad är ett filter,
  • hur man lägger till ett filter,
  • hur man introducerar vårt register i filtret
  • hur man hämtar klassen från filtret.

Lyckligtvis är allt ovanstående lätt att förklara.

Vad är ett filter?

Enkelt uttryckt låter krokar oss anropa WordPress vid specifika tidpunkter under programmets körning. Handlingar är vanligtvis reserverade för beteende; Filter är reserverade för data.

Dessutom tillåter filter oss att arbeta med specifik data i applikationen – det kan vara redan existerande data eller till och med ny data. Och i vårt fall kommer det att vara Registry-klassen som innehåller referenser till andra data.

Lägga till ett filter

Det är enkelt att lägga till ett filter. Den har tre delar:

  1. anropar add_filter ,
  2. definiera en unik identifierare för filtret,
  3. skickar information till filtret som kan returneras närhelst det anropas.

För oss kommer jag att identifiera vårt register som wpWidgetRegistry- filtret. Observera dock att det är viktigt att du väljer ett unikt namn för din implementering eftersom om du inte gör det kan du få kollisioner med annan data om ett annat plugin använder samma identifierade.

WordPress-widgets: Refactoring, del 5

Hur som helst, att lägga till ett filter utför en enkel uppgift:

Koppla en funktion eller metod till en specifik filteråtgärd.

Så detta betyder att vi måste definiera en metod med vårt ID. På grund av PHPs natur behöver vi inte använda en separat funktion.

WordPress-widgets: Refactoring, del 5

Istället kan vi använda en anonym funktion.

Anonyma funktioner, även kända som stängningar, tillåter skapandet av funktioner som inte har något specificerat namn. De är mest användbara som värdet av återuppringningsparametrar, men de har många andra användningsområden.

Den anonyma funktionen som vi kommer att definiera kommer att acceptera en referens till pluginet som ett argument och sedan returnera det när filtret anropas (vilket kommer att visas senare i den här artikeln).

Skicka information till vårt filter

Nu när vi har täckt allt detta kan vi gå igenom processen att skapa en instans av vårt register, definiera ett filter och sedan lägga till registret så att det är tillgängligt i hela applikationen.

Så inom huvudpluginfilen, det vill säga wordpress-widget-boilerplate.php- filen, lägger vi till följande kodrader :

<?php

namespace WordPressWidgetBoilerplate;

use WordPressWidgetBoilerplateUtilitiesRegistry;

// More to come...

Ovanstående deklarerar namnutrymmet där registret finns. Sedan lägger vi till följande kodblock under autoloadern:

<?php

// Setup a filter so we can retrieve the registry throughout the plugin.
$registry = new Registry();
add_filter('wpWidgetRegistry', function() use ($registry) {
    return $registry;
});

Observera att när du siktar på att aktivera insticksprogrammet kommer det inte att aktiveras och kommer att ge ett fel. Detta beror på bristen på en autoloader som kommer att diskuteras i nästa inlägg.

2 Hämta vårt register

Eftersom registret är definierat i pluginets bootstrap och görs genom att använda ett filter, kan vi komma åt registret var som helst i vårt plugin genom att anropa vårt anpassade filter.

Låt oss till exempel säga att vi är i en annan klass och vi behöver få en referens till registret. För att göra detta kan vi ringa detta samtal :

<?php

// Retrieve the registry anywhere in the plugin.
$registry = apply_filters('wpWidgetRegistry', null);

Och det är allt. Lätt, eller hur? Så länge allt har lagts till ordentligt i registret – som kommer att täckas snart – så kommer vi att kunna komma åt dem alla genom de unika identifierarna som vi använde i föregående inlägg.

Autoloadern

Nu börjar vi använda namnutrymmen och använda andra klasser. Det betyder att vi kommer att behöva använda autoloaders.

Så innan vi går in på att omstrukturera hela klassen som den ser ut just nu, kommer vi att ta en liten omväg till några av funktionerna i Composer för att se hur den används för att generera en autoloader (utöver de saker vi redan har använder den för att hantera kvaliteten på vår källkod).

Inspelningskälla: tommcfarlin.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer