Anpassen der Theme-Prüfung zur Überprüfung von WordPress-Themes

Sicherheit und Konsistenz sind einige der Hauptanliegen, die wir beim Einsatz von Bibliotheken, Frameworks und Plugins von Drittanbietern haben. Wir stehen vor dem gleichen Problem, wenn Sie kostenlose und kommerzielle WordPress-Themes und Plugins verwenden.

Der WordPress-Codex enthält eine Reihe von Richtlinien und Regeln für die Entwicklung von Themen. Um Themen in das WordPress-Designverzeichnis einzureichen, müssen Sie diese Richtlinien einhalten. Es gibt jedoch Hunderte von freien und kommerziellen Themen, die möglicherweise nicht gemäß diesen Richtlinien entwickelt werden.

Grundsätzlich muss geprüft werden, ob ein Thema mindestens mit den vorgegebenen Richtlinien und Regeln übereinstimmt. Theme Check ist ein kostenloses WordPress-Plugin, das zur Überprüfung von WordPress-Themes entwickelt wurde.


Kann Theme Check alles überprüfen?

Es kann definitiv nicht mit seiner Standardfunktionalität. Hier werden wir sehen, wie wir die vorhandenen Prüfungen verwenden können, und unsere eigenen Regeln für die Validierung von WordPress-Themes hinzufügen.


Bedeutung des Theme Check Plugins

Theme Check enthält rund 40 integrierte Tests, um Ihr Design sowohl im Frontend als auch im Admin-Dashboard zu überprüfen. Grundsätzlich enthalten diese Überprüfungen notwendige Validierungen, um Sicherheitsbedenken zu vermeiden und Themenfunktionalitäten mit den Richtlinien für die Themenentwicklung abzugleichen.

Als Themenentwickler oder Benutzer von Drittanbieter-Themen sollten wir ein solches Tool verwenden, um sicherzustellen, dass unsere Themen den Standards entsprechen.

Die Hauptwichtigkeit von Theme Checker besteht in der Möglichkeit, vorhandenes Verhalten zu ändern oder durch steckbare Plugins neues Verhalten hinzuzufügen. In diesem Artikel werden wir uns mit seiner Architektur und den Möglichkeiten der Erweiterung des Plugins befassen, um es als voll funktionsfähige Bibliothek zur Themenkontrolle zu verwenden.


So verwenden Sie die Themenüberprüfung

Ich gehe davon aus, dass die meisten von Ihnen dieses Plugin bereits in Ihren WordPress-Entwicklungsaufgaben verwendet haben. Diejenigen, die dieses Plugin noch nicht kennen, können eine Kopie aus dem WordPress-Plugin-Repository unter http://wordpress.org/extend/plugins/theme-check/ herunterladen..

Nach der Installation und Aktivierung wird ein Untermenü aufgerufen Theme Check unter dem Aussehen Speisekarte. Dort finden Sie eine Dropdown-Box mit allen verfügbaren Themen Ihrer WordPress-Installation. Sie können ein Thema auswählen und auf klicken prüfen Sie Schaltfläche, um die Validierung des Themas zu starten. Sobald der Vorgang abgeschlossen ist, wird ein Bildschirm wie der folgende angezeigt.


Vergewissern Sie sich, dass die Option aktiviert ist WP_DEBUG Option in der wp-config.php Datei in WAHR bevor Sie beginnen, Themen zu validieren.

Der Bildschirm mit den Themenprüfungsergebnissen enthält alle Arten von Fehlern, die in Ihrem Thema in verschiedenen Fehlertypen gefunden wurden, z EMPFOHLEN, ERFORDERLICH, WARNUNG, usw. Beachten Sie, dass alle diese Überprüfungen auf der Grundlage der WordPress-Design-Überprüfungsstandards durchgeführt werden.

Die eigentliche Leistungsfähigkeit von Theme Check liegt darin, dass wir das Plugin um benutzerdefinierte Validierungsprüfungen erweitern. Sehen wir uns also den Code an, um herauszufinden, wie er funktioniert und wie wir ihn mit unseren eigenen Prüfungen erweitern können.


Grundlegendes zur Theme Check-Oberfläche

Theme Check bietet eine klar definierte und einfache Oberfläche zum Erstellen von Checks. Alle vorhandenen Überprüfungen sowie neue Überprüfungen müssen in dieser Schnittstelle implementiert werden, damit alles funktioniert. Der folgende Code in der checkbase.php Datei zeigt die allgemeine Benutzeroberfläche für Designprüfungen.

 // Schnittstelle, die alle Überprüfungen implementieren sollten Schnittstelle themecheck // sollte für "gut / okay / akzeptabel" den Wert "true" zurückgeben, für die Funktion "bad / not-okay / inacceptable" die öffentliche Funktionsprüfung ($ php_files, $ css_files, $ other_files); // sollte ein String-Array zurückgeben, in dem alle gefundenen Probleme erläutert werden. public function getError (); 

Grundsätzlich enthält es zwei Funktionen zur Überprüfung des Themas und zur Fehleranzeige. Der gesamte Dateiinhalt Ihres Designs wird in drei Hauptvariablen als Zeichenfolgen komprimiert. Diese Variablen werden dann vom Plug-In an die Check-Funktion jeder Check-Klasse übergeben.

In der prüfen Funktion müssen wir die Validierungen implementieren und Fehler zurückgeben, wenn die Prüfung als fehlgeschlagen abgeschlossen wird. Dann ist die getError Diese Funktion wird aufgerufen, um die Fehlernachrichten auf der Ergebnisseite der Designprüfung hinzuzufügen.


Einführung in den Themenprüfprozess

Ich denke, es ist wichtig, den Initialisierungsprozess von Theme Check zu verstehen, um herauszufinden, wie es funktioniert und welche wichtigen Abschnitte wir fokussieren müssen, bevor die Plugin-Funktionalität erweitert wird.

Sobald wir das Design ausgewählt und auf die Schaltfläche "Check it" geklickt haben, sucht das Plugin mithilfe des PHP nach allen Dateien im ausgewählten Design RecursiveDirectoryIterator und ordnet den gesamten Inhalt dieser Dateien einer String-Variablen zu.

Dann wird der Dateiinhalt in drei Variablen aufgeteilt, je eine für PHP-Dateien, CSS-Dateien und andere Dateien. Dann werden die Design-Prüfungen ausgeführt, die für uns als Entwickler die wichtigste Rolle spielen werden.

Berücksichtigen Sie den folgenden Code für den ersten Ausführungsprozess nach dem Laden der Dateivariablen.

 // Lade alle Überprüfungen in das Überprüfungsverzeichnis $ dir = 'checks'; foreach (glob (dirname (__ FILE__). "/$dir/*.php") als $ file) include $ file;  do_action ('themecheck_checks_loaded'); Funktion run_themechecks ($ php, $ css, $ other) globale $ themechecks; $ pass = true; foreach ($ themechecks als $ check) if ($ check-Instanz von themecheck) $ pass = $ pass & $ check-> check ($ php, $ css, $ other);  return $ pass; 

Code Erklärung

  • Alle Themenprüfungen werden im gespeichert prüft Das Verzeichnis des Plugins und jedes davon wird durch die Suche nach den PHP-Dateien im Verzeichnis eingeschlossen.
  • Sobald alle Themenprüfungen geladen sind, führt das Plugin eine benutzerdefinierte Aktion aus themecheck_checks_loaded. Diese Aktion ist der wichtigste Teil des Erweiterungsprozesses.
  • Dann beginnt das System mit der Designprüfung durch run_themechecks Funktion, die PHP-Dateien, CSS-Dateien und andere Dateien als Variablen verwendet.
  • Schließlich wird die Überprüfungsfunktion für jede der Themenprüfungen in die globale geladen $ themechecks Variable, die ausgeführt wird, um den Überprüfungsvorgang abzuschließen.

Bestehende Designprüfungen anpassen

Die meisten Themenprüfungen basieren auf übereinstimmenden regulären Ausdrücken oder dem Abgleichen bestimmter Positionen in Zeichenfolgen. Unsere erste Anforderung besteht darin, herauszufinden, wie wir das Verhalten vorhandener Prüfungen ändern können. Schauen wir uns das an IncludeCheck Klasse, die überprüft, wie Dateien in ein Design eingefügt werden sollen.

 Die Klasse IncludeCheck implementiert den Test protected $ error = array (); Funktionsprüfung ($ php_files, $ css_files, $ other_files) $ ret = true; $ checks = Array ('/ (? __ ('Das Design scheint Include oder Requirement zu verwenden. Wenn diese verwendet werden, um separate Abschnitte einer Vorlage aus unabhängigen Dateien aufzunehmen, dann get_template_part () sollte stattdessen verwendet werden. ',' themecheck ')); foreach ($ php_files als $ php_key => $ phpfile) foreach ($ prüft als $ key => $ check) checkcount (); if (preg_match ($ key, $ phpfile, $ passend)) $ filename = tc_filename ($ php_key); $ error = '/ (?Fehler [] = Sprintf (__ ('INFO: % 1 $ s % 2 $ s% 3 $ s ',' themecheck '), $ dateiname, $ check, $ grep);  return $ ret;  function getError () return $ this-> error;  $ themechecks [] = new IncludeCheck;

Code Erklärung

  • Alle Designprüfungen verfügen über ein geschütztes Array zum Speichern von Fehlern.
  • Innerhalb der Check-Funktion können wir beliebig viele Checks in ein Array aufnehmen. Hier haben wir nur einen Scheck.
  • Die meisten Designprüfungen werden durch übereinstimmende reguläre Ausdrücke ausgeführt. Daher sind die Schlüssel für das Array von Überprüfungen reguläre Ausdrücke. Der Wert des jeweiligen Schlüssels sollte die Fehlernachricht enthalten, die im Fehlerfall angezeigt werden soll.
  • Dann müssen wir einen bestimmten Dateityp auswählen und die einzelnen Checks im Array durchlaufen, während die globale Datei aktualisiert wird Scheckzahl Variable.
  • Als Nächstes führen wir die Übereinstimmung des regulären Ausdrucks durch und ordnen die Fehler dem globalen Fehlerarray bei Fehlern zu.
  • Anschließend geben wir den Status der Prüfung als Erfolg oder Misserfolg zurück. Abhängig vom Status greift das Plugin die erforderlichen Fehler auf, um auf der Ergebnisseite angezeigt zu werden.
  • Zum Schluss initialisieren wir das Objekt der Theme-Check-Klasse und weisen es der globalen zu $ themechecks Array am Ende der Datei.

Angenommen, Sie möchten eine vorhandene Designprüfung verbessern, indem Sie neue Regeln hinzufügen oder vorhandene Regeln ändern. Alles, was Sie tun müssen, ist, ein neues Element hinzuzufügen oder die regulären Ausdrücke vorhandener Elemente im Check-Array zu ändern.

Jetzt sollten Sie ein klares Verständnis dafür haben, wie Themenprüfungen funktionieren und wie Fehler bei Fehlern generiert werden. Lassen Sie uns auf den wichtigsten Teil der Erstellung unserer eigenen benutzerdefinierten Prüfungen eingehen, ohne das Core-Plugin zu beeinflussen.


Erweiterter Theme-Check mit steckbarem Plugin

Das Erstellen neuer Design-Prüfungen kann so einfach sein wie das Implementieren der Schnittstelle mit einer neuen Design-Überprüfungsklasse und das Einfügen der Dateien in das Check-Verzeichnis des Plugins. Das Ändern der Kernfunktionalität wird jedoch nicht empfohlen, da Sie Ihre Dateien bei Plugin-Updates immer verlieren.

Es empfiehlt sich, Plugins mit möglichen Optionen zu erweitern, ohne den Kerncode zu beeinflussen. Entwickler von Theme Check haben die Option aktiviert, die Funktionalität mithilfe eines Action-Hooks zu erweitern themecheck_checks_loaded.

Dieser Aktions-Hook wird ausgeführt, nachdem alle Themenprüfungen geladen wurden. Daher haben wir Zugriff auf die globale Design-Check-Variable in Plug-In-Plugins. Nun ist es an der Zeit, ein benutzerdefiniertes Plugin zu erstellen.


Vorhandene Schecks entfernen

Manchmal müssen wir einige Design-Prüfungen deaktivieren, um den Anforderungen unserer eigenen Designs zu entsprechen. Sie müssen entweder die Datei entfernen oder den Initialisierungscode kommentieren, um sie in einem normalen Szenario zu deaktivieren. Mit dem Plugin-Plugin können Sie diese jederzeit aktivieren oder deaktivieren, ohne den Kern zu beeinträchtigen. Mal sehen, wie wir mit einem Plugin die Themenprüfung deaktivieren können.

 function custom_themecheck_checks_loaded () global $ themechecks; $ checks_to_disable = array ("Veraltet", "Screenshot_Checks"); foreach ($ themechecks als $ keyindex => $ check) if ($ check-Instanz von themecheck) $ check_class = get_class ($ check); if (in_array ($ check_class, $ checks_to_disable)) unset ($ themechecks [$ keyindex]);  add_action ('themecheck_checks_loaded', 'custom_themecheck_checks_loaded');

Wir können das umsetzen themecheck_checks_loaded Aktion des Theme Check Plugins in unseren eigenen Plugins. Dort haben wir Zugriff auf alle geladenen Design-Prüfungen. Wir können ein Array definieren, das die Klassennamen der Designprüfungen enthält, die deaktiviert werden sollen. Zum Schluss setzen wir die im deaktivierten Array enthaltenen Prüfungen zurück, und die Motivprüfung wird ohne diese Überprüfungen ausgeführt.

Wir können die vorhandenen Design-Prüfungen problemlos mit unserem eigenen Plugin modifizieren. Die Implementierung einer Themenkontrolle von Grund auf ist die Hauptabsicht dieses Tutorials. Mal sehen, wie wir einen neuen Design-Check erstellen können.


Erstellen neuer Designprüfungen

Es gibt Hunderte von Szenarien für die Implementierung von benutzerdefinierten Design-Prüfungen. Das Validieren von benutzerdefinierten Aktions-Hooks ist einer meiner Favoriten und ich werde den Code für Erklärungen verwenden.

Grundsätzlich möchte ich bestimmte benutzerdefinierte Aktionshaken in meinen Designs, um neue Funktionen hinzuzufügen. Das thematische Thema ist ein gutes Beispiel für die effektive Verwendung benutzerdefinierter Aktionshaken in Themen. Beginnen wir mit der Implementierung eines benutzerdefinierten Design-Checks.

Erstellen Sie im benutzerdefinierten Plugin-Ordner eine neue PHP-Klasse, und implementieren Sie die Schnittstelle mit den Details, die in den vorherigen Abschnitten beschrieben wurden. Am einfachsten ist es, einen vorhandenen Theme-Check zu kopieren und die Check-Funktion und die Initialisierung zu ändern. Berücksichtigen Sie den folgenden Code für die Implementierung der Überprüfung benutzerdefinierter Aktionshooks.

  __( 'Sehen: ',' themecheck '),' do_action \ (\ s? ("| \ ') sample_action2 (" | \') \ s? \) '=> __ (' Siehe: ',' themecheck ')); foreach ($ prüft als $ key => $ check) checkcount (); if (! preg_match ('/'. $ key. '/ i', $ php)) if ($ key === 'do_action \ (\ s? ("| \') sample_action1 (" | \ ') \ s? \) ') $ key = __ (' do_action (\ 'sample_action1 \') ',' themechek ');  if ($ key === 'do_action \ (\ s? ("| \') sample_action2 (" | \ ') \ s? \)') $ key = __ ('do_action (\' sample_action2 \ ') ',' themechek ');  $ key = ltrim (trim ($ key, '('), '\\')); $ this-> error [] = sprintf (__ ('ERFORDERLICH: Konnte nicht finden % 1 $ s. % 2 $ s ',' themecheck '), $ key, $ check); $ ret = falsch;  return $ ret;  function getError () return $ this-> error;  $ themechecks [] = new CustomActions; ?>

Bei dieser benutzerdefinierten Prüfung habe ich reguläre Ausdrücke eingefügt, um zwei benutzerdefinierte Aktionshooks zu validieren, die aufgerufen werden sample_action1 und sample_action2. Nachdem eine Übereinstimmung gefunden wurde, definieren wir einen benutzerfreundlichen Schlüssel, der dem Benutzer anstelle der ursprünglichen regulären Ausdrücke angezeigt wird. Wenn Sie es mit vorhandenen Prüfungen vergleichen, werden Sie feststellen, dass nur reguläre Ausdrücke und Meldungen der Prüffunktion geändert wurden.

Schließlich können wir mithilfe einer anderen Implementierung der Aktion neue Prüfungen hinzufügen, wie im folgenden Code gezeigt.

 Funktion custom_new_themecheck_loadeder () global $ themechecks; include_once 'custom_actions.php';  add_action ('themecheck_checks_loaded', 'custom_new_themecheck_loadeder');

Jetzt können Sie Ihre eigenen Theme-Checks in das Theme Check-Plugin integrieren.


Wann wird der Theme Check verwendet?

Theme Check wurde entwickelt, um Themes anhand der WordPress-Theme-Entwicklungsrichtlinien zu überprüfen. Daher wird es hauptsächlich auf Sicherheitsbedenken und die Beibehaltung eines konsistenten Formats und von Funktionen gerichtet sein.

Wir können dieses Plugin aus einer anderen Perspektive verwenden, um Features hinzuzufügen, wie im letzten Abschnitt gezeigt. Wenn Sie ein Experte für reguläre Ausdrücke sind, können Sie mit diesem erstaunlichen Werkzeug eine erweiterte Themenprüfung erstellen.

Es liegt an Ihnen, zu entscheiden, wann benutzerdefinierte Designprüfungen verwendet werden sollen. Natürlich ist dies für Theme-Entwickler wichtiger als für Benutzer von WordPress-Themes.

Ich kann mir zwei Hauptszenarien vorstellen, in denen benutzerdefinierte Designprüfungen nützlich sein können.

Ein grundlegendes Framework pflegen

Ich glaube nicht, dass ein Entwickler jedes WordPress-Theme von Grund auf entwickeln wird. In den meisten Fällen behalten Entwickler ihr eigenes grundlegendes Design-Framework und bauen darüber hinaus verschiedene Designs auf.

Benutzerdefinierte Designüberprüfungen sind daher sehr nützlich, um die Konsistenz eines grundlegenden Frameworks über alle Themen hinweg zu gewährleisten. Sie können Dinge wie Bildformate, Größen, Kurzcodes, Aktionen usw. in Ihrem eigenen Rahmen überprüfen.

Themes jenseits von Blogs entwickeln

Im Allgemeinen sind die meisten WordPress-Themes so gestaltet, dass sie für Blogger-Themen geeignet sind. WordPress bietet integrierte Action-Hooks für Blog-Funktionen. Daher werden wir keine Schwierigkeiten haben, sie zu erweitern.

Es gibt jedoch Szenarien, in denen Sie Themen für Anwendungen entwickeln, z. B. Stellenanzeigen, Einkaufswagen, Ereignisverwaltungssysteme usw. Diese Themen haben im Vergleich zu Blogs völlig andere Bereiche und Funktionen. WordPress bietet für solche Themen keine integrierten Funktionen. Daher ist es eine gute Idee, Action-Hooks in solchen Designs zu implementieren und sie mithilfe von Theme Check zu überprüfen.


Fazit

Ich hoffe, Sie haben gelernt, wie wichtig Theme Check ist und wie wir es nutzen können, um die Konsistenz aller Themen zu gewährleisten.

Ich würde gerne wissen, ob Sie dieses Plugin verwendet haben und welche Art von benutzerdefinierten Design-Prüfungen Sie implementiert haben, um seine Funktionen zu erweitern.

Teilen Sie Ihre Anregungen und Fragen in den Kommentaren weiter unten mit.