O que são caches de usuário do WordPress?
Se você já trabalhou em um projeto quando precisa trabalhar com cookies de autenticação do WordPress, provavelmente já se deparou com a função wp_set_auth_cookie. Em resumo, esta função :
Define o ID de usuário baseado em cookies de autenticação.
E quando você usa essa função, está essencialmente criando um cookie que é usado para autenticar o usuário para fazer login no WordPress.
Mas se você deseja autenticar um usuário com o WordPress programaticamente, há algumas etapas extras necessárias para fazê-lo corretamente, especialmente se você estiver trabalhando com plugins de cache.
E é aí que os caches de usuário do WordPress entram em ação.
Caches de usuário do WordPress
Além de simplesmente criar um cookie de autenticação, é importante certificar-se de que você está fazendo o seguinte:
- limpar os caches do usuário,
- livrar-se dos cookies de autenticação,
- definir um usuário atual,
- defina o cookie de autenticação,
- atualizar os caches do usuário.
Parece uma solução complicada, certo? O bom é que há um punhado de funções (link acima) que tornam isso realmente fácil.
O importante a lembrar é que você precisa de uma instância de WP_User para fazer tudo isso. Como você recupera uma instância do usuário dependerá da funcionalidade do seu plugin.
Ou seja, talvez você consiga recuperar uma referência para um usuário com um nome de usuário :
<?php
$user = get_user_by( 'login', $username );
Ou talvez você tenha um endereço de e-mail que possa usar :
<?php
$user = get_user_by( 'email', $email );
Seja qual for o caso, as etapas a seguir devem ter um usuário se você quiser fazer isso corretamente. Dito isso, veja como o código pode ficar :
<?php
// Clean out any cookies and cookies for an existing user.
clean_user_cache( $user->ID );
wp_clear_auth_cookie();
// Set the current user and update the caches.
wp_set_current_user( $user->ID );
wp_set_auth_cookie( $user->ID, true, false );
update_user_caches( $user );
E é isso! Então aqui está a descrição do que cada função faz:
- clean_user_cache. Isso removerá todas as informações dos usuários em cache.
- wp_clear_auth_cookie. Quando um usuário é autenticado com o WordPress, há um cookie armazenado. Isso limpará esse cookie de autenticação.
- wp_set_current_user. Dada uma instância de WP_User, diga ao WordPress para marcar este usuário (permitindo que ele exista no banco de dados)
- wp_set_auth_cookie. Isso criará o cookie usado para autenticação do usuário que acabou de ser definido na função anterior.
- update_user_caches. Por fim, isso atualizará os caches do usuário com as informações com os novos anos.
Quando se trata de trabalhar com o cache de usuários do WordPress, autenticação e avançar com usuários autenticados programaticamente, essas são as funções que devem ser usadas.