Get Adobe Flash player

Wordpress und Sessions

Wordpress nutzt keine Sessions und Zerstört beim laden einer Seite vorerst ALLE globale Variablen. Das bedeutet auch das eine mit session() gestartete Session nicht mehr vorhanden ist.

Um nun Trotzdem Sessions nutzen zu können und nicht das Wordpress System selbst zu manipulieren zu müssen, helfen wir uns mit einem kleinen trick:

add_action('init', function(){
     session_start();
}, 1);

Dieser Code gehört in die functions.php des Themes, kann aber auch in ein Plugin Intregiert werden.

Was macht dieser Code nun im Detail:

Wir schleusen mit hilfe des hooks "init" das session_start() nach dem Wordpress alle Globalen Zerstört hat ein. Wichtig ist hierbei die 1, diese gibt Wordpress vor wann dieser hook ausgeführt werden soll. Hier nach dem Zerstören der Globalen aber vor dem Laden der Templates und anderen Plugin funktionen.

Um auszuschließen das die Session evtl Doppelt gestartet wird, weil ein anderes Plugin das evtl auch machen will ändern wir die Funktion deshalb etwas ab:

add_action('init', function(){
      if(!session_id())
      {
          session_start();
      }
}, 1);

Nun wird vorher geprüft ob schon eine Session gestartet wurde und nur eine neue gestartet wenn noch keine vorhanden ist.

Jetzt könnt ihr nach herzenslust mit Sessions arbeiten ;)

Mit

$_SESSION['DeinVariablenName'] = 'IrgendeinWert';

setzt ihr eine Variable und mit

 

print $_SESSION['DeinVariablenName'];

 

Könnt ihr den wert ausgeben. Natürlich könnt ihr damit auch alles andere anstellen was ihr mit normalen Variablen auch anstellen könnt.

mfg