WordPress-Widgets: Refactoring, Teil 5
Im vorherigen Beitrag haben wir eine Registrierung erstellt, die verwendet wird, um alle verschiedenen Klassen zu speichern, die dafür verantwortlich sind, unserem Widget seine Funktionalität zu verleihen.
Dazu werden verschiedene andere Klassen eingeführt, aber bevor wir dorthin gehen, müssen wir die Registrierung zum Bootstrap des Plugins hinzufügen (geschweige denn einen Bootstrap für das Plugin erstellen).
Konkret haben wir hier aufgehört:
Wie bereits erwähnt, müssen wir dies zum Bootstrap des Plugins hinzufügen. Dazu müssen wir jedoch unseren eigenen Filter definieren, damit wir die Registrierung problemlos um den Rest des Plugins herumreichen können (wenn die Zeit dafür gekommen ist).
In diesem Beitrag konzentrieren wir uns also genau darauf.
Das WordPress-Widget Boilerplate: Refactoring, Teil 5
Wenn Sie die Serie bis zu diesem Punkt verfolgt haben, sollten Sie in einer guten Position sein, um speziell die Registrierung hinzuzufügen, damit wir während des gesamten Plugins darauf zugreifen können.
Dies setzt jedoch voraus, dass Sie wissen, wie Sie Ihre Filter definieren. In WordPress verwenden wir ständig Aktionen und Filter.
Die Sache mit diesen Hooks ist jedoch, dass sie bereits definiert sind. Wie definieren wir also unseren Filter?
Werfen wir einen Blick darauf, genau das zu tun.
1 Definition unseres Filters
Zuerst müssen wir ein paar Konzepte verstehen:
- Was ist ein Filter,
- wie man einen Filter hinzufügt,
- wie wir unsere Registrierung in den Filter einführen
- wie man die Klasse aus dem Filter abruft.
Glücklicherweise ist alles oben Genannte leicht zu erklären.
Was ist ein Filter?
Einfach ausgedrückt, Hooks ermöglichen es uns, WordPress zu bestimmten Zeiten während der Ausführung des Programms aufzurufen. Aktionen sind normalerweise dem Verhalten vorbehalten; Filter sind für Daten reserviert.
Darüber hinaus ermöglichen uns Filter, mit bestimmten Daten in der Anwendung zu arbeiten – es können bereits vorhandene Daten oder sogar neue Daten sein. Und in unserem Fall wird es die Registry-Klasse sein, die Verweise auf andere Daten enthält.
Hinzufügen eines Filters
Das Hinzufügen eines Filters ist einfach. Es besteht aus drei Teilen:
- Aufruf von add_filter ,
- Definieren einer eindeutigen Kennung für den Filter,
- Übergeben von Informationen an den Filter, die bei jedem Aufruf zurückgegeben werden können.
Für uns werde ich unsere Registrierung als wpWidgetRegistry -Filter identifizieren. Beachten Sie jedoch, dass es wichtig ist, dass Sie einen eindeutigen Namen für Ihre Implementierung wählen, da es andernfalls zu Kollisionen mit anderen Daten kommen könnte, wenn ein anderes Plugin denselben identifizierten verwendet.
Wie auch immer, das Hinzufügen eines Filters führt eine einfache Aufgabe aus:
Verbinden Sie eine Funktion oder Methode mit einer bestimmten Filteraktion.
Das bedeutet also, dass wir eine Methode mit unserer ID definieren müssen. Aufgrund der Natur von PHP müssen wir keine separate Funktion verwenden.
Stattdessen können wir eine anonyme Funktion verwenden .
Anonyme Funktionen, auch bekannt als Closures, ermöglichen die Erstellung von Funktionen, die keinen bestimmten Namen haben. Sie sind am nützlichsten als Wert von Callback-Parametern, aber sie haben viele andere Verwendungen.
Die anonyme Funktion, die wir definieren werden, akzeptiert einen Verweis auf das Plugin als Argument und gibt es dann zurück, wenn der Filter aufgerufen wird (was später in diesem Artikel gezeigt wird).
Übergeben von Informationen an unseren Filter
Jetzt, da wir all das abgedeckt haben, können wir den Prozess der Erstellung einer Instanz unserer Registrierung durchlaufen, einen Filter definieren und dann die Registrierung hinzufügen, damit sie in der gesamten Anwendung zugänglich ist.
Innerhalb der Haupt-Plugin-Datei, also der Datei wordpress-widget-boilerplate.php, fügen wir die folgenden Codezeilen hinzu :
<?php
namespace WordPressWidgetBoilerplate;
use WordPressWidgetBoilerplateUtilitiesRegistry;
// More to come...
Das Obige deklariert den Namensraum, in dem sich die Registrierung befindet. Dann fügen wir den folgenden Codeblock unterhalb des Autoloaders hinzu:
<?php
// Setup a filter so we can retrieve the registry throughout the plugin.
$registry = new Registry();
add_filter('wpWidgetRegistry', function() use ($registry) {
return $registry;
});
Beachten Sie, dass, wenn Sie das Plugin aktivieren möchten, es nicht aktiviert wird und einen Fehler ausgibt. Dies liegt an dem Fehlen eines Autoloaders, der im nächsten Beitrag besprochen wird.
2 Abrufen unserer Registrierung
Da die Registrierung im Bootstrap des Plugins definiert ist und dies durch die Verwendung eines Filters erfolgt, können wir überall in unserem Plugin auf die Registrierung zugreifen, indem wir unseren benutzerdefinierten Filter aufrufen.
Nehmen wir beispielsweise an, dass wir in einer anderen Klasse sind und einen Verweis auf die Registrierung erhalten müssen. Dazu können wir diesen Aufruf tätigen :
<?php
// Retrieve the registry anywhere in the plugin.
$registry = apply_filters('wpWidgetRegistry', null);
Und das ist es. Einfach richtig? Solange alles ordnungsgemäß zur Registrierung hinzugefügt wurde – was bald behandelt wird – können wir über die eindeutigen Kennungen, die wir im vorherigen Beitrag verwendet haben, auf alle zugreifen.
Der Autoloader
Jetzt fangen wir an, Namespaces und andere Klassen zu verwenden. Das bedeutet, dass wir Autoloader verwenden müssen.
Bevor wir also die gesamte Klasse so umgestalten, wie sie jetzt ist, werden wir einen kleinen Abstecher zu einigen der Funktionen von Composer machen, um zu sehen, wie sie zum Generieren eines Autoloaders verwendet werden (zusätzlich zu den Dingen, die wir bereits haben verwenden, um die Qualität unseres Quellcodes zu handhaben).

