Sidebar
ein-/ausblenden

WPlize, Klasse für Optionen in WordPress

Plugin für WordPress SEO

Anzeige

Da der Titel nicht besser gelungen ist, hole ich gleich zu beginn mal ein wenig aus und erkläre was WPlize macht und wozu es gedacht ist.

WPlize ist eine Klasse, die man frei nutzen darf und soll. Sie dient dem Zugriff auf die Tabelle options von WordPress und erleichtert das Anlegen, Ablegen, Holen und Löschen von Einstellungen zu Plugins oder Themes in der Datenbank, Tabelle options, von WordPress. Durch die Verwendung dieser Klasse werden Plugins und Themes performanter und sauber aufgebaut. Es wird pro Plugin oder Theme nur ein Eintrag in der Datenbank angelegt, mit Hilfe eines Array werden diese Daten dort hinterlegt und verwaltet.
Viele Plugins legen sehr viele Daten ab, nur als Beispiel: das populäre Kontaktform-Plugin cforms legt ca. 60 Einträge ab, die damit auch sehr viele Aufrufe starten und die Last erhöhen.
Das muss nicht sein, den WordPress unterstützt im Standard das Nutzen von Arrays. Auch einzelne Einträge werden von WordPress über das interne Caching performanter gestaltet, allerdings ist dies nie so optimal wie ein Array für viele Einträge als viele Einträge in der Datenbank.

Die Lösung nutze ich schon seit geraumer Zeit und habe bisher jeweils neue Funktionen in meinen Plugins dafür abgelegt. In älteren Plugins habe ich die Vorgehensweise zum Teil noch nicht umgesetzt, bei entsprechenden Änderungen und Zeit wird dies aber passieren.

Durch eine Kommunikation mit Sergej Müller (bekannt durch sein Plugin wpSEO), dem ich diese Variante empfahl ist eine gemeinsame Arbeit entstanden, die Sergej dann gleich auf ein eigenständige Klasse erweitert hat, so dass es nun einfacher und mit viel weniger Code integrierbar ist.
Im ersten Wurf stand uns der Sinn nach einem Plugin, was den Zugriff aus anderen Plugins ermöglicht. Da wir aber glauben, dass es dann nicht zu einer Verbreitung kommt, habe wir diese Idee wieder verworfen und möchten die Klasse nun hier anbieten und stellen sie zum Nutzen frei.

Die Klasse stellt nicht die Funktionen von WordPress in Frage, sie nutzt diese ebenfalls. Sie macht es nur einfacher, dass Plugin- und Theme-Autoren einen performanteren Zugriff ohne viel Mühe haben. Die klassischen Funktion add_option, delete_option, get_option und update_option kommen trotzdem in den Funktionen der Klasse zum Einsatz.

Welche Möglichkeiten bietet die Klasse und wie bindet man sie ein?

Die Datei am besten in einem Unterordner eures Plugins oder Themes ablegen und via PHP einbinden.


if ( !class_exists('WPlize') ) {
	require_once('inc/WPlize.php');
}

Dadurch stehen dann die unterschiedlichen Zugriffe zur Verfügung und sollen anhand folgender Syntax ein wenig näher erklärt werden.
Dem Download liegt auch ein Readme-Datei bei, so dass Erklärungen und Beispiele auch dort zu finden sind.

  • Multi-Option initialisieren
    
    $WPlize = new WPlize(
                         'my_plugin',
                         array(
                              'my_key'   => 'my_value',
                              'your_key' => 'your_value'
                              )
                        );
    
  • Option updaten [Variante 1]
    $WPlize->update_option('my_key', 'simple_value');
  • Option updaten [Variante 2]
    
    $WPlize->update_option(
                           array(
                                 'my_key'   => 'my_value',
                                 'your_key' => 'simple_value'
                                )
                          );
    
  • Option auslesen
    $WPlize->get_option('your_key');
  • Multi-Option entfernen
    $WPlize->delete_option();

Download:

Ist die Arbeit nicht 1 Euro wert?
Jede Spende wird dankbar angenommen und ermöglicht das weitere Arbeiten an freier Software.
Möchtest du mehr oder anders spenden, so besuche meine Wunschliste.

Download als zip-Datei
Download als zip-Datei: class_WPlize.zip - 3 kByte

Historie

  • 26.09.2008 - Idee und Lösung
  • 09.12.2008 - update der Prüfungen

14 Kommentare und 1 Trackback zu „WPlize, Klasse für Optionen in WordPress“

  1. 1
    Kommentar von Philip

    Warum benutzt ihr nicht die __get und __set Magic-Methoden? Grundsätzlich finde ich den Zugriff über eine Klasse klasse (tolles Wortspiel, oder?), aber er muss auch für mich als Programmierer einfacher/schneller/kürzer sein. sonst benutze ich den alten Weg weiterhin.

    Und der Download funktioniert (noch) nicht.

  2. 2
    Kommentar von Frank Bültge

    Aber das ist es doch gerade, mir dieser klasse Klasse (?) ist es schneller und einfacher. Zuvor musste man sich dafür eigene Funktionen bauen, oder übersehe ich was? Klassich wird mit get_option oder set_option gearbeitet, wo es auch schon im WP-Standard möglich ist, Arrays abzulegen, denn WP erkennt es automatisch. Trotzdem muss man aber das Array dann noch zerlegen und die Aktualisierung durch eine Funktion jagen.

    *Download gefixt, Danke !

  3. 3
    Kommentar von Ralf

    Ich arbeite schon etwas länger mit serialize() und unserialize() für meine neuern Plugins, und finde dies auch sehr elegant. Welchen Vorteil hätte das Plugin für mich?

  4. 4
    Kommentar von Frank Bültge

    @Ralf: Du bindest es als Klasse ein, ein Zeile. Dann ist der Zugriff jeweils auf die Inhalte sehr einfach und schlicht. Man muss keine eigenen Update- oder "Hol"- etc. Funktionen schreiben. Serialize() und unserialize() sind in WP nicht notwendig, denn WP unterstützt das im Standard seit Version 2.5.

  5. 5
    Kommentar von Dominik

    Wenn ich Optionen habe, speichere ich die in einem assoziativem Array. Und das speichere ich dann mit set_option() bzw. hole ich wieder mit get_option().
    Brauche ich dafür eine eigene Klasse? Ich denke nicht ;-)

    LG
    Dominik

    Achja: unterstützt WP nicht schon sehr viel länger das automatische (de-)serialisieren von Variablen bei Verwendung von set_option()/get_option()? Ich meine das schon mit WP 2.0 genutzt zu haben...

  6. 6
    Kommentar von Frank Bültge

    @Dominik: bin mir nicht sicher, dachte auf jeden Fall seit 2.3.
    Nochmal, die Klasse ersetzt nicht get_ und set_option, sondern nutzt diese. Aber in deinen Plugins musst di ja den Schlüssel im Array suchen oder ablegen und nur dass macht das Plugin. Der Zugriff ist damit lediglich einfacher, nicht anders. Natürlich braucht man das nicht, man kann es auch wie bisher selber coden, ohne Klasse in die jeweilige Funktion. Mit der Klasse steht nur ein Hilfsmittel bereit.

  7. 7
    Kommentar von Ralf

    ich bau mir immer eine array auf mit meinen optionen und jag die mit ner foreach schleife in ne datenbank und genau so lösch ich sie auch wieder.
    dürfte wohl dann so ziemlich genau das gleiche sein.

    ist ne gute idee für die, die es brauchen, für mich jedoch überflüssig. werds aber doch mal später am abend durchschauen und sehen ob es vorzüge hat die ich nicht bedenke.

  8. 8
    Kommentar von Steffen

    verrückt. ich bin leider kein coder und da klingelt mir die klasse ganz schön im kopf hin und her.

  9. 9
    Kommentar von Dominik

    @Ralf
    Du kannst das Array direkt speicher, eine foreach-Schleife ist völlig überflüssig ;-)

    @Frank
    Hilfsmittel sind immer gut. Nur denke ich, dass hier eine eigene Klasse für soetwas profanes, nämlich dem Wrappen von get_option() und set_option() etwas überdimensioniert ist... Davon abgesehen ist einmal $o = get_option('pluginname') und dann der Zugriff auf $o['irgendeine-option'] ziemlich billig.

    Cooler fänd ich jetzt aber ne Klasse, die mir das Verwalten der Plugin-Oberfläche im Backend erleichtert: Klasse einbinden, Erscheinungsbild festlegen und passende Seite ausgeben...

    LG
    Dominik

  10. 10
    Kommentar von Frank Bültge

    @Dominik: das gibt es bereits WPF - WordPress Plugin Framework, allerdings ist das eventuell zu oversized, denn das Framework bietet natürlich mehr Inhalte als nur der Zugriff auf die Oberfläche.

  11. 11
    Kommentar von Ralf

    och war das gestern so spät... ja ich benutz immer serialize und vorher nutzte ich ne foreach schleife...

    niemals bis 1 uhr ein shop programmieren und nebenher blogs lesen, wird man ganz verwirtt :-)

  12. 12
    Kommentar von Daniel Gilbert

    Eigentlich schade, dass noch keiner Frank gelobt hat:

    Feine kleine Klasse. ;)

  13. 13
    Pingback von WPlize - A Class For Options In WordPress - WP Engineer
  14. 14
    Kommentar von Claudia

    Nun, es scheint an dieser eleganten Programmierug zu liegen, dass WPSeo (grade gekauft) bei mir nach der Aktivierung nur einen FATAL ERROR anzeigt:
    Warning: wpSEO::require_once(inc/wplize.class.php) [wpseo.require-once]: failed to open stream: No such file or directory in....Pfad zu WPseo line 12.

  15. 15
    Kommentar von Sergej Müller

    Claudia,

    erstens, ist es hier kein Blog für wpSEO oder so. Wenn du Fehlermeldungen hast oder Unterstützung zu wpSEO brauchst, dann weiß du, wie du den Entwickler kontaktieren kannst - die Informationen dazu habe ich an jeder nur erdenklichen Stelle auf der wpSEO Website hinterlegt.

    Zudem ist die Fehlermeldung ja sehr aussagekräftig und besagt, dass die Datei im angegebenen Verzeichnis nicht gefunden wurde - diese liegt aber dem heruntergeladenen ZIP-Archiv definitiv bei. Bitte alles per FTP hochladen, nicht nur Teile davon.

Überlastung, Kommentare sind vorübergehend geschlossen

Ich bin urlaubsreif, ersticke in Arbeit und damit auch für die Leser des Weblogs nicht zu erreichen. Bitte geduldet euch ein wenig mit Supportanfragen.
Leider muss ich die Kommentarfunktion deaktivieren, ansonsten würde ich weiter in Arbeit ersticken oder die Anfragen nicht nach bestem Gewissen beantworten.

Vielen Dank für das Verständnis!