Como posso logar um usuário fora do Wordpress antes que a página seja carregada?

4

Eu usaria o código abaixo para que, no meu site wordpress, se ?logout fosse anexado ao final do URL, o usuário seria desconectado. Isso funciona bem - se o usuário visitar uma página como mysite.com/?logout ou mysite.com/test-page/?logout ou qualquer página na qual a variável $_GET['logout'] esteja definida, ele será desconectado.

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

O problema que estou enfrentando é que mesmo se eu adicionar essa ação a plugins_loaded , que está no topo da lista de ganchos de ação , a página exibida ainda mostrará o usuário que efetuou login. Se a página for atualizada em um carregamento subsequente, ela exibirá a versão "desconectada" da página, mas não a mesma solicitação .

Etapas para recriar o problema:

  1. Adicione este código a um plug-in ou talvez ao seu arquivo functions.php . Eu tenho isso em um arquivo no diretório mu-plugins .
  2. Faça login no seu site Wordpress.
  3. Visite uma página ou publicação no seu site, talvez uma com uma caixa de comentários, e anexe ?logout ao URL
  4. A página será carregada normalmente, a caixa de comentários terá seu nome e mostrará que você está logado e pode deixar uma resposta
  5. Recarregue a página (com ou sem "? login" anexado ao URL)
  6. A página está desconectada

Comportamento desejado

Depois de efetuar login no Wordpress, visitar uma página com ?login anexada à URL concluirá o processo de logout e exibirá a página como se você tivesse efetuado logout quando ela foi carregada - sem precisar atualizá-la.

Eu não acho que posso ligar para o Wordpress mais cedo, e por isso não sei como contornar isso.

    
por cwd 07.12.2011 / 21:36

2 respostas

7

Isso deve ser feito:

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

Em vez disso, tente usar o gancho wp ou init .

    
por Joseph Leedy 07.12.2011 / 21:45