Über die Struktur eines Objekts Wordpress Plugin
Freitag, 24. April 2009 Wenn wir uns auf das einfache Beispiel hellodolly.php von Wordpress, oder sogar die gleichen offiziellen Unterlagen werden wir nie zu powered die Ausarbeitung eines guten und effizienten Plug-in. Hier analysieren wir eine mögliche Struktur und ein Skelett, das kann mehrfach verwendet werden.
Die Grundlagen
Zunächst müssen wir begreifen, wie und wann ein Wordpress-Plugin ist in das System geladen. Wenn Sie aktivieren ein Plugin aus der Verwaltung, die Datei mit dem Haupt-Code enthält, von der klassischen Linien des Kommentars erkannt:
- / *
- Plugin Name: Mein Plugin
- Plugin URI: http://wordpress.org/extend/plugins/mioplugin/
- Beschreibung: Beschreibung meiner Plugin
- Version: 1.0.0
- Autor: Giovambattista Fazioli
- Autor URI: http://labs.saidmade.com
- * /
geladen ist oder wenn es in der Front-End ist, wo wir in der Verwaltung sind (Back-End):

Dieses Verhalten ist an sich richtig, und wahrscheinlich in vielen Fällen nicht berücksichtigt wird vom Entwickler übernommen. Auch einige Plugins eine Struktur haben (z. B. haben, nicht erhoben und somit benötigen keine Verwaltung), dass es nicht notwendig, auf diesem Punkt beharrt machen würde.
Es sollte jedoch berücksichtigt werden, dass einige Plugins eine einheitliche Verwaltung, dh, mit sich bringen eine Menge Code nur im Backend von WordPress benutzt haben. In diesen Fällen, wenn Sie sich nicht die Vorsichtsmaßnahmen, die Sie Gefahr für die Front-End zu laden, der Teil sichtbar, Navigatoren, Code, der nicht völlig nutzlos zu schwerfällig beim Laden des Blogs.
Mögliche Konflikte: namespace
Aus dem Gesagten folgt eine weitere wichtige Tatsache: alle Wordpress-Plugins sind in der gleichen Gegend der Operation, die Ergebnisse in die unglückliche Folge geladen, wenn zwei verschiedene Plugins eine Funktion haben (eine Variable oder Konstante) den gleichen Namen hat, diese werden miteinander in Konflikt geraten!
Das Ideal wäre daher in der Lage sein:
- Die Trennung der Be-Code für das Front-End-und Back-End
- Schützen Sie die "Namespace", um mögliche Konflikte mit anderen Plugins zu vermeiden, werden geladen
Front-End-oder Back-End?
Der einfachste Weg, um festzustellen, ob es in der Verwaltung (Back-End) ist die Funktion is_admin() Anruf is_admin()
- is_admin ( ) ) // includi il codice lato back-end if (is_admin ()) / / include den Code Back-End -
- else / / include Front-End-Seite Code
In der Praxis, schematisch, können wir erreichen:

Bedeutung:
- is_admin ( ) ) { if (is_admin ()) (
- 'admin.php' ) ; require_once ( 'admin.php');
- { ) Else (
- 'client.php' ) ; require_once ( 'client.php');
- )
Mit Klassen zum Schutz der Name-Space
Um Überschneidungen zu verhindern unangenehme ein guter Weg ist, "wrap" unsere Aufgabe und unsere Variablen in geeigneten Behältnissen: Objekte. Definieren einer Klasse haben mehr Gelegenheit, die Namen unserer Funktionen wie die Beschaffung zusätzlicher Vorteil können wir in Zukunft Plugin-Code wiederverwenden zu schützen. Diese Technik erlaubt es, zwei verschiedene Plugins, so dass zwei verschiedene Objekte mit der gleichen Methode (Funktion). Der Konflikt ist beseitigt dank der Systematik der verschiedenen Klassen und deren Instanzen.
Sketch Plugin
Having said all dies sehen wir, wie eine Skizze zu machen (die Sie finden auf dem neuesten Stand in der Google Code Repository Saidmade), ein Skelett, können Sie wiederverwenden, wenn wir brauchen, um ein Plugin zu schreiben. Zunächst einmal erkennen, die neue Organisation Objekt wir uns, dass es zwar richtig, dass es einen eigenen "Netz" zwischen den Back-End-und Front-End, das auch wahr, dass einige "Funktionen" und wird gemeinsam genutzt werden! Dies im Hinblick auf die objektorientierte Programmierung, zeigt uns den Weg in eine mögliche percorrerre Code Organisation. Zum Beispiel schlägt die Intuition, dass die Schaffung einer Klasse Mutter ", dh eine Klasse, um unsere Klasse abgeleitet" Client "(Front-End) und" admin "(Back-End), wäre eine gute Sache!
Diese Klasse "Mutter" enthält alle Eigenschaften (Variablen) und Methoden (Funktionen) Shared Environments Front-End-und Back-End:

Wir werden daher unsere Klasse "Mutter" und zwei spezielle Klassen für die Front-End-und Back-End:
- wp-sketch_class. php / / Oberklasse
- wp-sketch_admin. php / / Klasse für die Back-End -
- wp-sketch_client. php / / Klasse für die Front-End -
Die wichtigste Datei wp-sketch.php wird nur als angemessen sind, und instanziieren Sie diese Klassen auch:
- 'wp-sketch_class.php' ) ; // load the core class require_once ( 'wp-sketch_class.php'); / / lade die Hauptklasse
- is_admin ( ) ) { // check admin if (is_admin ()) (/ / check admin
- 'wp-sketch_admin.php' ) ; // load admin class require_once ( 'wp-sketch_admin.php'), / / load-Klasse admin
- / /
- new WPSKETCH_ADMIN ( ) ; // create object $ Wp_sketch_admin = new WPSKETCH_ADMIN () / / create object
- { ) 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 = new WPSKETCH_CLIENT () / / create object
- )
In diesem "Kontext" Sie nur darauf achten, einzigartige Variablen, die Instanzen von Klassen enthalten, zu definieren $wp_sketch_admin und $wp_sketch_client und die Namen der Klassen selbst WPSKETCH_ADMIN und WPSKETCH_CLIENT aber die Methoden und Eigenschaften präsentieren sie .
Beide Klassen WPSKETCH_ADMIN und WPSKETCH_CLIENT sind "Unterklassen" (Kinder) WPSKETCH_CLASS in der Datei wp-sketch_class.php Dies ist, wie oben, nur gemeinsame Objekte enthalten (Variablen und Funktionen) erwähnt, wie es immer ist, unabhängig davon, ob wir geladen sind die Back-End-und Front-End.
Fazit ...
Sie können das gesamte Skelett aus dem Google Code Repository Saidmade. Dies wird auch eine Datei wp-sketch_functions.php verwendet, um Aufrufe von Funktionen in der Front-End zu verhindern übersetzt einen Anruf oggetto->metodo() In der Tat ist eine optionale Datei ist nicht immer notwendig.
Mögliche Entwicklungen dieses Ansatzes sind immer bessere Identifizierung der Abschnitt über dem wir tätig sind und Wordpress, und in diesem Sinne bietet sie zahlreiche Maßnahmen zur Optimierung mit dem Ziel ergriffen werden, um nur den Code zu laden benötigt und wenn sie wirklich gebraucht. Ulteiori Beispiele auf dieser Seite werden wir sie bald sehen.













[...] Eine Technik, um schnell und schreibe eine Wordpress-Plugin kann auf ein Skelett (Skizze) vorbereitet zu starten. Spezifikationen Wordpress, in der Tat oft dazu führen, dass unter Plugins strukturell sehr ähnlich sind, sind in der Tat die Namen von Funktionen und deren Inhalt zu ändern. Jedoch bei der Vorbereitung eines Skeletts, müssen wir bedenken nicht, doppelte Funktion konstant oder Bezeichnungen, die von anderen (darunter auch unsere) Plugin verwendet werden, erhalten eine Strafe errore.Tutti Plugins teilen sich die gleiche aktive Fläche des Betriebs. Also, wenn ein Plugin eine Funktion namens abc_normalize () hat kein anderes Modul kann eine Funktion mit dem Namen identico.Caso haben Ferne? Zufall? Obwohl auf den ersten Blick scheint es eine Frage völlig zu vernachlässigen, wenn geschieht, ist sehr ärgerlich, vor allem für den Endverbraucher, der sich nicht in der Lage, ein Plugin zu verwenden findet. Auch die Definition der Konstanten (z. TABLE_NAME, WP_MAIN_PATH, etc ...) ist viel häufiger, um Duplikate zu erhalten. Für weitere Informationen: Auf der Struktur eines Objekts Wordpress Plugin [...]
[...] Auf der Struktur eines Objekts WordPress-Plugin, wie Klassen in einem WordPress Plugin-Struktur auf das Laden und die Wiederverwendung von Code zu optimieren. [...]
[...] Diese Razzia in die natürliche Fortsetzung des Artikels von Napolux oder mit Struktur-Objekte in ein WordPress-Plugin Blog [...]
[...] Auf der Struktur eines Objekts Wordpress Plugin [...]
Hallo Ich lese diese große Artikel, und ich wollte Ihnen eine Frage stellen: Ich habe ein Plugin für die Verwaltung von Gruppen von Erzeugnissen durch die WP kategorisiert erstellt von mir und anderen aus anderen Tabellen, die plguin den Back-End hart arbeiten, um es zu erhalten, arbeitet perfekt in der Lage Front-End, dass ich weiß nicht, wie die Produkte für beide Liste für Details anzeigen ... Das bedeutet nn wissen, wie man arbeitet sie mit mod rewrite Permalinks wäre spielen wirklich sehr gut.
lassen Sie mich wissen
Domenico
@ Serdominik: Hallo Dominic, Sie besser im Detail erklären, was Sie erreichen wollen?
@ Giovambattista Fazioli:
Hallo, danke, dass Sie mir eine Antwort.
Meine Frage ist sehr schwer, in ein paar Zeilen Text verstehen und ist schwierig zu schreiben, damit Sie verstehen (sorry, wenn Sie von euch), dann schwierig, durch die Kommentare und Antworten auf Fragen für mich, weil so viele Dinge, die ich vergessen werde, um zu überprüfen folgen wenn ich zufällig sehen Sie antwortete heute nach 3 Tagen. Sehen Sie selbst und wenn nn ist eine Störung, fühlen sich über MSN oder Skype oder E-Mail
Leider ziehen es viele, nicht auf Einzelheiten des Projekts Bemerkung, die ich realisiert habe