¿Cómo puedo cerrar la sesión de un usuario de Wordpress antes de que se cargue la página?

4

Estaría usando el código a continuación para que en mi sitio de wordpress si se agregue ?logout al final de la URL, se cierre la sesión del usuario. Esto funciona bien: si el usuario visita una página como mysite.com/?logout o mysite.com/test-page/?logout o cualquier página donde la variable $_GET['logout'] esté configurada, se cerrará su sesión.

if( isset($_GET['logout']) ){
    add_action('plugins_loaded', 'wp_logout',0);            
}

El problema al que me enfrento es que incluso si agrego esta acción a plugins_loaded , que se encuentra en la parte superior de la lista de enlaces de acción , la página que se mostrará seguirá mostrando al usuario que ha iniciado sesión. Si se actualiza la página en una carga posterior, se mostrará la versión "desconectada" de la página, pero no en la misma solicitud .

Pasos para recrear el problema:

  1. Agregue este código a un complemento o quizás a su archivo functions.php . Lo tengo en un archivo en el directorio mu-plugins .
  2. Inicia sesión en tu sitio de Wordpress.
  3. Visite una página o publique en su sitio, tal vez una con un cuadro de comentarios, y agregue ?logout a la URL
  4. La página se cargará normalmente, el cuadro de comentarios tendrá su nombre y mostrará que ha iniciado sesión y puede dejar una respuesta.
  5. Volver a cargar la página (con o sin '? login "adjunto a la url)
  6. La página ahora está desconectada

Comportamiento deseado

Después de iniciar sesión en Wordpress, al visitar una página con ?login adjunto a la URL, se completará el proceso de cierre de sesión y se mostrará la página como si se hubiera cerrado la sesión cuando se carga, sin tener que actualizarla.

No creo que pueda conectarme a Wordpress antes, así que no estoy seguro de cómo solucionar esto.

    
pregunta cwd 07.12.2011 - 21:36

2 respuestas

7

Esto debería hacerlo:

add_action('plugins_loaded', function(){
    wp_set_current_user(0);
},0);
    
respondido por el Steve Brown 07.12.2011 - 21:46
0

En su lugar, intente usar el enlace wp o init .

    
respondido por el Joseph Leedy 07.12.2011 - 21:45

Lea otras preguntas en las etiquetas