Como utilizar PHP sessions en WordPress WordPress
WordPress no utiliza variables de sesión PHP (la superglobal $_SESSION
). Aunque puedas no estar de acuerdo, esto es, en pricipio, muy buena idea. Pero desafortunadamente hay veces que uno necesita echar mano de estas variables para guardar información entre una solicitud y otra y puede verse un poco frustrado si está trabajando con WordPress.
Hay ya muchos tutoriales en internet sobre este tema y muchas discusiones sobre cuál es el mejor método. Así que no me voy a andar por las ramas. Si quieres que todo vaya bien tienes que crear las variables de sesión en el action hook init:
add_action('init', 'cyb_session_start', 1);
function cyb_session_start() {
if( ! session_id() ) {
session_start();
}
}
Nota que hemos pasado la prioridad 1 a la función add_action
, pues tiene que ejecutarse antes que cualquier otra parte de la aplicación que necesite acceder a las variables de sesión. Si registras la sesión en PHP antes del evento init
puede que sea destruída por wp_unregister_GLOBALS()
.
Terminar la sesión si el usuario hace log in/log out
Si utilizamos el código anterior sin más, la sesión de PHP seguirá siendo la misma y las variables de sesión seguirán almacenando la misma información si un usuario inicia sesión o cierra sesión en WordPress (no confundir el log in o el inicio de sesión en WordPress con las variables de sesión PHP). Para evitar posibles errores, por ejemplo cuándo un usuario hace log in en un cuenta, luego log out y luego otra vez log in pero en una cuenta diferente, las variables de sesión deberían destruirse cuándo el usuario inicia/cierra sesión en WordPress:
add_action( 'init', 'cyb_session_start', 1 );
add_action( 'wp_logout', 'cyb_session_end' );
add_action( 'wp_login', 'cyb_session_end' );
function cyb_session_start() {
if( ! session_id() ) {
session_start();
}
}
function cyb_session_end() {
session_destroy();
}
Ahora las variables de sesión son tuyas, haz con ellas lo que quieras. Y disfruta 😉