dynamicinternet Webdesign

Das Blog

Themen, Tutorials sowie Tipps & Tricks über Webdesign, (X)HTML und CSS, Programmierung, WordPress und was uns sonst noch bewegt.

RSS abonnieren

WordPress: Mit Options arbeiten

Optionen werden von WordPress in einer extra Tabelle options (mit Preffix davor) abgelegt. Optionen sind zum Beispiel der Blogname, welches Theme genutzt wird usw. Plugins legen ihre Einstellungen ebenfalls als Optionen ab. Ein einfaches Beispiel, wie man auf Optionen zugreifen kann:

echo get_option('blogname');

Dieses Schnipsel gibt den Blognamen aus. Um eigene Optionen zu nutzen, müssen diese zuerst angelegt werden:

add_option('myOptions', 'a Test');

Dieser Aufruf schreibt einen neuen Eintrag myOptions mit dem Wert a Test in die Datenbank. Dies ist nicht die einzige Möglichkeit, Daten in den Optionen abzulegen. Man kann auch ein Array hinein packen.

$myOptions = array(
	'firstOption' => 1,
	'secondOption' => 'second'
);
add_option('myOptions', $myOptions);

In der Datenbank sieht das dann so aus: a:2:{s:11:”firstOption”;i:1;s:12:”secondOption”;s:6:”second”;}.
Man kann hier sehr schön die Datentypen sehen. a: steht für ein Array, s: für einen String und i: für einen Integer. Um die Optionen zu überschreiben, benutzt man update_option().

$myNewOptions = array(
	'firstOption' => 2,
	'secondOption' => 'second Option'
);
update_option('myOptions', $myNewOptions);

Jetzt kann man mit den gespeicherten Optionen arbeiten.

$myOptions = get_option('MyOptions');
foreach($myOptions as $option => $value) {
	echo $option . " => " . $value . "<br />";
}
/* Output:
firstOption => 2
secondOption => second Option
*/
 
echo $myOptions['firstOption'];
/* Output:
2
*/

Man kann zum Beispiel irgendwelche Ausgaben von den Optionen abhängig machen, so nach dem Motto wenn die Option 1 ist, tue dies, wenn sie 2 ist tue das.

In meinem Projekt X Theme habe ich mittlerweile über 130 Optionen. Das schreibt sich dann beim Programmieren nicht sonderlich schön, wenn man auf verschachtelte Arrays zugreifen muß.

$myOptions = get_option('MyOptions');
echo $myOptions['first']['foo']['bar']['name];

Man kann Optionen auch als Objekt in die Datenbank schreiben:

$myOptions = new stdClass();
$myOptions->name = "myOption";
$myOptions->params->param1 = 1;
$myOptions->params->param2 = 'second parameter';
update_option('myOptions', $myOptions);

In der Datenbank steht jetzt unser serialisiertes Objekt:

O:8:"stdClass":2:{s:4:"name";s:8:"myOption";s:6:"params";O:8:"stdClass":2:{s:6:"param1";i:1;s:6:"param2";s:16:"second parameter";}}

Nun kann man wie in einer Klasse ganz einfach auf die Optionen zugreifen:

$myOptions = get_option('MyOptions');
echo $myOptions->name;
/* Output:
myOption
*/
 
echo $myOptions->params->param2;
/* Output:
second parameter
*/

Was macht man nun mit dem erworbenen Wissen? Keine Ahnung, laßt euch etwas einfallen.

3 Kommentare
  1. Latz sagt:

    Die Optionen als Objekt darzustellen ist eine sehr schöne Idee. Werde ich in meinem aktuellen Projekt (pagebar v2.5) gleich mal umsetzen.

  2. Tobias sagt:

    Wichtig ist, dass man die Options auch mal löscht, sonst vermüllt alles

  3. Micha sagt:

    @Latz, ich freu mich drauf.

    @Tobias, da hast du Recht. Eine Uninstall-Funktion sollte jedes Plugin/Theme dabeihaben, wenn es mit Optionen arbeitet.

Einen Kommentar schreiben