WordPress Plugin objektorientiert programmieren, Teil 1: das MVC pattern, namespaces und autoloading

In letzter Zeit habe ich ein paar kleine WordPress Plugins geschrieben und dabei versucht objektorientiert zu arbeiten. Dabei ist eine Art Vorlage entstanden, die ich jetzt leicht nutzen kann.
Durch die Verwendung von namespaces brauche ich keine Präfixe mehr für meine Methoden und allein das sehe ich als hinreichendes Argument, Plugins nur noch so zu schreiben.

Plugin Grundstruktur

Für mich hat sich dabei folgender Aufbau heraus gebildet:

Basic WP Plugin Structure

 

 

 

 

 

Diese Struktur kann natürlich erweitert werden, z.B. um einen Backend- und Frontendordner, etc.. Im assets Ordner befinden sich die Unterordner ‚css‘, ‚img‘ und ‚js‘. Aber auch da kann natürlich mehr oder anderes hin, wie z.B. ein ‚fonts‘ Ordner. Die Ordner ‚controllers‘, ‚models‘ und views sollten klar sein, wobei der views Ordner Unterordner enthält, welche die Struktur abbilden:

Views Folder with Sub Folders

 

 

 

 

 

Entsprechend finden sich die Klassen ProjectController und TaskController im Ordner Controllers sowie die Klassen Project und Task im Ordner models. Im Ordner ‚core‘ finden sich die Klassen ‚ActivatePlugin‘ sowie ‚DeactivatePlugin‘ und eine ‚Init‘ Klasse. Da packe ich bei Bedarf auch noch Helper Klassen hin, die vorwiegend statische Methoden enthalten.

Und alles nimmt seinen Ausgangspunkt in der Klasse ‚OopPlugin‘. Diese Klasse beschreibe ich im nächsten Beitrag zu diesem Thema.

 

Ich habe mich an folgenden Beiträgen orientiert (und hoffe, keinen vergessen zu haben):

Grundaufbau eines WordPress Plugins

Object-Oriented WordPress Plugin Development

WordPress Plugin Development: Ein Plugin erstellen

Using Namespaces In WordPress Development

https://code.tutsplus.com/tutorials/using-namespaces-and-autoloading-in-wordpress-plugins-part-1–cms-27157 und davon natürlich die ganze Serie. 😉

Weiter zu Teil 2: WordPress Plugin objektorientiert programmieren: die entry-class

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.