5.4. Die Options API

Manchen kommt es verwirrend vor wenn WordPress zwischen “Option” und “Setting” unterscheidet. Aus technischer Sicht wird beides mit “Einstellung” ins Deutsche übersetzt. WordPress benutzt aber beide Wörter jeweils in einem anderen Kontext.

Mit “Settings” meint WordPress alle Einstellungsfelder, also eher den generierten HTML-Code aller Input-Elemente (wie im letzten Kapitel beschrieben). Wohingegen mit “Option” die Werte gemeint sind, die aus der Datenbank ausgelesen bzw. die in die Input-Felder eingegeben werden können.

Mit der Settings-API können Sie also Felder erstellen. Mit der Options-API Werte speichern, auslesen und löschen.

Meist verwendet man die Options-API immer im Zusammenhang mit der Settings-API. Der Grund ist nämlich ganz banal: die Settings API greift intern auf die Options-API zurück. Darum müssen Sie sich beim Erstellen eines Formulars mittel Settings-API nicht um das Speichern kümmern.

Options anlegen

WordPress definiert intern folgende Funktion:

<?php
function add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' ) {
	...
}
?>

Wobei gilt:

You’re not allowed to see this content. Please log in first.

Options verändern

Auch das Verändern klappt ähnlich wie das Anlegen einer Option. WordPress definiert wie folgt:

<?php
function update_option( $option, $value, $autoload = null ) {
	...
}
?>

Wobei gilt:

You’re not allowed to see this content. Please log in first.

Optionen abrufen

Möglicherweise haben Sie schon eine eigene Einstellungsseite mit der Settings-API erstellt und erfahren, dass WordPress dann automatisiert die Funktion update_option() und/oder add_option() nutzt. Gebraucht wird jedoch auch eine Funktion, die einmal gespeicherten Daten wieder abruft:

<?php
function get_option( $option, $default = false ) {
	...
}
?>

Wobei gilt:

You’re not allowed to see this content. Please log in first.

Optionen löschen

Natürlich lassen sich einmal angelegte Optionen auch wieder entfernen. Zum Beispiel in der bereits angesprochenen Uninstall-Routine, wenn das Plugin gelöscht wird.

<?php
function delete_option( $option ) {
	...
}
?>

Dabei gilt:

You’re not allowed to see this content. Please log in first.

Praxistipps

Autoloading richtig nutzen

Sie haben bereits erfahren, dass WordPress intern mit einem eigenen Objekt-Cache arbeitet. Aus diesem Grund können Optionen beim Erstellen auch mit dem Parameter $autoload so markiert werden, dass Sie beim Ladevorgang in den Cache geladen werden. Das verhindert, dass das System alle Optionen immer einzeln vom MySQL-Server holen muss. Sie stimmen wohl überein, dass eine einzige Abfrage schneller ist, als mehrere kleine.

You’re not allowed to see this content. Please log in first.

Boolsche Typen als 0 und 1 speichern

Wie oben beschrieben: WordPress bzw. die Datenbank gibt nicht immer den richtigen Typen zurück, wenn per get_option() ein Wert abgerufen wird. Gerade bei boolschen Werten ist das problematisch. Sie haben deswegen zwei Möglichkeiten:

You’re not allowed to see this content. Please log in first.

Optionen als Array speichern

Darüber hinaus ist es ratsam, zusammengehörige Optionen in einem Array zusammen zu fassen und erst dann als einzigen Eintrag zu speichern. Auch hier gilt: eine einzige Abfrage ist schneller als mehrere kleine.

You’re not allowed to see this content. Please log in first.

WordPress-Interne Werte abfragen

WordPress wird mit einer Vielzahl von Optionen ausgeliefert. Eine (nicht ganz) vollständige Liste aller Optionen finden Sie unter anderem hier: https://codex.wordpress.org/Option_Reference

Beispiele

You’re not allowed to see this content. Please log in first.

Netzwerk-Optionen

Die Options-API wurde in Version 2.8 so erweitert, dass auch das Netzwerk-Interface einer Multisite-Installation darauf zugreifen kann. So wurde es möglich, seitenspezifische Optionen in eine separate Datenbank abzulegen. Folgende Funktionen stellt WordPress bereit:

Netzwerk-Option anlegen

<?php
function add_network_option( $network_id, $option, $value ) {
	...
}
?>

Wobei gilt:

You’re not allowed to see this content. Please log in first.

Netzwerk-Option verändern

Auch das Verändern klappt ähnlich wie das Anlegen einer Netzwerk-Option. WordPress definiert wie folgt:

<?php
function update_network_option( $option, $value ) {
	...
}
?>

Wobei gilt:

You’re not allowed to see this content. Please log in first.

Netzwerk-Option abrufen

<?php
function get_network_option( $network_id, $option, $default = false ) {
	...
}
?>

Wobei gilt:

You’re not allowed to see this content. Please log in first.

Netzwerk-Option löschen

Ähnlich wie beim Löschen einer Option lässt sich auch eine Netzwerk-Option entsprechend entfernen.

<?php
function delete_network_option( $network_id, $option ) {
	...
}
?>

Es gilt:

You’re not allowed to see this content. Please log in first.

Besondere Hinweise bei der Benutzung von Netzwerk-Optionen

Sie können die oben genannten Netzwerk-Funktionen ohne Probleme benutzen. Auch wenn das Plugin in einer Nicht-Multisite-Installation betrieben wird. WordPress wird intern dann automatisch die entsprechenden Funktionen aufrufen.

You’re not allowed to see this content. Please log in first.

2 Kommentare zu “5.4. Die Options API

  1. In diesem Kapitel ist mir nicht Klar was mit Netzwerk gemeint ist. Bedeutet das, dass eine WP Seite über mehrere Server laufen, wegen der Performance? Wenn nicht, ein Beispiel würde hier helfen, damit man sieht wo Einsatzmöflichkeiten sind.

    lg
    Andreas