Wenn wir das einfache Beispiel verlassen hellodolly.php bereitgestellt durch WordPress , oder sogar die gleichen offiziellen Dokumenten, kommt nie zum Schreiben einer guten und effizienten Plug-in. Wir wollen Sie hier, um eine mögliche Struktur, dann ein Skelett, das mehrfach verwendet werden können analysiert werden.
Die Grundlagen
Zuerst müssen wir verstehen, wie und wann ein WordPress-Plugin ist in das System geladen. Wenn durch ein Plugin aktiviert, die Datei, enthält die wichtigsten Codes, durch die klassischen Linien der Kommentar erkannt:
1 2 3 4 5 6 7 8 | / * Plugin Name: Meine Plugins Plugin URI: http://wordpress.org/extend/plugins/mioplugin/ Beschreibung: Beschreibung meiner Plugins Version: 1.0.0 Autor: Giovambattista Fazioli Author URI: http://labs.saidmade.com * / |
geladen ist oder wenn es in der Front-End, und wenn wir uns in der Verwaltung (Backend):

Dieses Verhalten ist an sich richtig, und wahrscheinlich in vielen Fällen nicht berücksichtigt, indem der Entwickler übernommen. Auch haben einige Plugins eine Struktur (z. B. Einstellungen, und dann haben keine Notwendigkeit einer Verwaltung), dass es sinnlos, in diesem Punkt verweilen würde.
Doch es ist offensichtlich, dass einige Plugins eine konsistente Verwaltung, das heißt, bringen sie mit ihnen eine Menge Code nur im Backend von WordPress verwendet. In diesen Fällen, wenn Sie sich nicht an die Vorsichtsmaßnahmen, die Sie mit dem vorderen Ende hochzuladen, die Teil sichtbar Navigatoren, völlig unnötig Code, der nichts tut, sondern belasten die Last des Blogs.
Mögliche Konflikte: namespace
Aus dem oben Gesagten eine andere wichtige Tatsache folgt, alle WordPress-Plugins in der gleichen Gegend des Betriebs geladen sind, Resultate, die in die unglückliche Konsequenz, dass, wenn zwei unterschiedliche Plugins eine Funktion haben (eine Variable oder Konstante) hat den gleichen Namen, diese wird mit jedem anderen Konflikt!
Im Idealfall würden dann in der Lage sein:
- Separate Laden der Code für die Front-End und Back-End
- Schützen Sie die "Namespace", um mögliche Konflikte mit anderen Plugins in das System geladen vermeiden
Front-end oder Back-End?
Der einfachste Weg, um festzustellen, ob es in der Verwaltung ist (Backend) ist um die Funktion aufzurufen is_admin() :
1 2 | is_admin ( ) ) // includi il codice lato back-end if (is_admin ()) / / Include Code im Backend else / / Code enthalten Front-End- |
In der Praxis schematische, können wir zu erreichen:

oder:
1 2 3 4 5 | is_admin ( ) ) { if (is_admin ()) { 'admin.php' ) ; require_once ('admin.php'); { Else {} 'client.php' ) ; require_once ('client.php'); } |
Mit Klassen, um den Namespace zu schützen
Um zu verhindern unangenehmen Überschneidungen ein guter Weg ist, "wrap" unsere Aufgaben und unsere Variablen in geeignete Behälter: Objekte. Durch die Definition einer Klasse haben wir mehr Gelegenheit, die Namen unserer Funktionen, die wir als einen zusätzlichen Nutzen der Wiederverwendung von Code in Zukunft Plugin erhalten schützen können. Diese Technik macht es möglich, zwei verschiedene Plugins, so zwei unterschiedliche Objekte mit der gleichen Methode (Funktion) haben. Der Konflikt ist dank der Nomenklatur der verschiedenen Klassen und deren Instanzen beseitigt.
Sketch plugin
Having said all dies sehen wir, wie eine Skizze (die finden Sie bis in date machen eine Google-Code-Repository Saidmade ), ein Skelett, die Sie wiederverwenden können, wann immer wir ein Plugin schreiben müssen. Vor allem Objekte in der neuen Organisation, um uns klar, dass, wenn es wahr ist, dass es eine Trennung von "net" zwischen den Back-End und dem vorderen Ende ist auch wahr, dass einige "Features" sind und gemeinsam genutzt werden! Dies, auf der Ebene der objektorientierten Programmierung, zeigt sie den Weg mitgehen in eine mögliche Organisation des Codes. Zum Beispiel schlägt Intuition, dass die Schaffung einer Klasse "Mutter", dh eine Klasse, von der Ableitung unserer Klassen "Client" (Frontend) und "admin" (back end) zu, es wäre eine gute Sache sein!
Diese Klasse "Mutter" enthält alle Eigenschaften (Variablen) und Methoden (Funktionen) Umgebungen von Front-End und Back-End-geteilt:

So werden wir unsere Klasse "Mutter" und zwei Klassen für die Front-End und Back-End:
1 2 3 | sketch_class.php-wp / / Oberklasse sketch_admin.php-wp / / Klasse für die Back-End- sketch_client.php-wp / / Klasse für die Front-End- |
Die Haupt-Datei ( wp-sketch.php ) wird nur in einer fristgerechten Weise aufgenommen werden, und instanziieren diese Klassen richtig:
1 2 3 4 5 6 7 8 9 10 | 'wp-sketch_class.php' ) ; // load the core class require_once ('wp-sketch_class.php') / / Laden der Kern-Klasse is_admin ( ) ) { // check admin if (is_admin ()) {/ / Check admin 'wp-sketch_admin.php' ) ; // load admin class require_once ('wp-sketch_admin.php') / / load admin-Klasse / / new WPSKETCH_ADMIN ( ) ; // create object Wp_sketch_admin WPSKETCH_ADMIN $ = new () / / Objekt erstellen { Else {} 'wp-sketch_client.php' ) ; // load client front-end class require_once ('wp-sketch_client.php') / / load Client-Front-End-Klasse new WPSKETCH_CLIENT ( ) ; // create object Wp_sketch_client WPSKETCH_CLIENT $ = new () / / Objekt erstellen } |
) ei nomi delle classi stesse ( WPSKETCH_ADMIN e WPSKETCH_CLIENT ), ma non i metodi e le proprietà in esse presenti. Dieser "Rahmen" Sie müssen nur vorsichtig sein, eindeutig zu definieren, die Variablen, Instanzen von Klassen (enthalten $wp_sketch_admin und $wp_sketch_client ) und die Namen der Klassen selbst ( WPSKETCH_ADMIN und WPSKETCH_CLIENT ), aber die Methoden und Eigenschaften, die sie enthalten, .
sono “sottoclassi” (figli) di WPSKETCH_CLASS , definita nel file wp-sketch_class.php . Beide Klassen WPSKETCH_ADMIN und WPSKETCH_CLIENT sind "Unterklassen" (Kinder) WPSKETCH_CLASS , in der Datei definiert wp-sketch_class.php . Dies ist, wie oben erwähnt, enthält nur freigegebene Elemente (Variablen und Funktionen), wie es immer geladen ist, unabhängig davon, ob wir in der Back-End-oder Front-End.
Zum Schluss ...
Sie können das gesamte Skelett von Download der Google Code Repository Saidmade . . In dieser finden Sie auch eine Datei wp-sketch_functions.php , verwendet, um Aufrufe von Funktionen in einem Front-End zu verhindern, um einen Anruf zu übersetzen oggetto->metodo() . In der Tat ist es eine optionale Datei ist nicht immer notwendig.
Mögliche Entwicklungen dieses Ansatzes sind immer bessere Identifizierung der Abschnitt, auf dem wir den Betrieb und sind WordPress, und in diesem Sinne eine Vielzahl von Optimierungsmaßnahmen durchgeführt werden, um nur die notwendigen Code zu laden, und wenn wir wirklich brauchen. Ulteiori Beispiele auf dieser Seite werden wir sie bald zu sehen.











[...] Eine Technik, um schnell schreiben ein WordPress-Plugin werden kann, um ein Skelett (Skizze) bereiten zu starten. WordPress-Spezifikationen in der Tat oft mit Plugins strukturell sehr ähnlich führen, tatsächlich sind die Namen von Funktionen und deren Inhalt zu ändern. Doch in der Vorbereitung ein Skelett, im Auge zu behalten nicht um Namen, Konstanten und Funktionen von anderen (einschließlich uns) Plugin verwendet doppelte, sonst bekommen errore.Tutti aktive Plugins die gleiche Einsatzgebiet. Also, wenn ein Plugin hat eine Funktion, die aufgerufen abc_normalize ist () keine weiteren Plugins kann eine Funktion mit dem Namen identico.Caso remote haben? Zufall? Obwohl auf den ersten Blick ist es eine Sache völlig unbedeutend scheint, ist es extrem nervig, wenn es passiert, vor allem für den Endanwender, die sich nicht in der Lage, ein Plugin Verwendung findet. Auch in der Definition der Konstanten (wie TABLE_NAME, WP_MAIN_PATH, etc ...) ist viel häufiger, um Duplikate zu erhalten. Für weitere Informationen: Auf die Struktur von Objekten eines Wordpress Plugin [...]
[...] Auf die Struktur eines Objekts WordPress Plugin Wie um die Klassen der ein WordPress-Plugin für eine optimale Be-und Wiederverwendung von Code-Struktur. [...]
[...] Die Serie mit dem natürlichen Fortsetzung des Artikels von Napolux, Struktur oder ein Objekt mit einem Plugin WordPress-Blog [...]
[...] Auf die Struktur von Objekten eines Wordpress Plugin [...]
Hallo ich lese diese große Artikel und ich wollte Ihnen eine Frage stellen: Ich habe ein Plugin für das Management von Produkten nach Kategorien und andere Kategorien von wp von mir mit anderen Tabellen in der Back-End-plguin erstellt kategorisiert arbeitet hart, um es perfekt in der Lage Front-End, dass ich nicht weiß, wie man die Liste der Produkte für den Einzelhandel ... dh nn wissen, wie man es mit Permalinks mod rewrite Arbeit Display würde sehr gut zu handeln.
lass es mich wissen
Dominic
@ Serdominik: Hallo Dominic, könnten Sie mir sagen mehr im Detail, was Sie brauchen?
@ Giovambattista Fazioli:
Hallo, danke für die mir eine Antwort.
Meine Frage ist recht schwierig, in ein paar Zeilen Text zu verstehen und zu schreiben ist es schwierig, damit Sie verstehen, (sorry, wenn ich Ihnen die Ihnen) dann schwierig, Kommentare über die Fragen und Antworten für mich als auch folgen unter vielen Dinge, die ich vergessen zu gehen und zu überprüfen Wenn durch Zufall sehe ich dich heute beantwortet nach 3 Tagen. Wenn Sie wollen und wenn Sie das Gefühl nn ist eine Störung durch MSN oder Skype oder E-Mail
Leider ziehen es viele nicht auf Einzelheiten des Projekts, dass ich tue Kommentar
[...] Der Produkt-Code folgt dem Standard objektorientierte Struktur der Objekte in einer statischen WordPress-Plugin beschrieben [...]
[...] Diskussion über die Struktur eines Plugin ist verfügbar unter: Auf die Struktur von Objekten eines Wordpress-Plugin, das eine mögliche Skelett für ein Paket zeigt richtig [...]