Trabalhando com transitórios e autenticação do WordPress
Continuando com o conteúdo do post anterior, é importante considerar também o uso de transientes e autenticação.
Porque há cenários em que os usuários são autenticados em um site (pense em uma área somente para membros de um site) e ou não são autenticados no site (como visitantes do site).
Esses tipos de situações estão presentes tanto em blogs quanto em outros sites e aplicativos da web em geral.
Transientes e autenticação do WordPress
Como podemos armazenar informações de usuários para esses usuários? Felizmente, o PHP nos fornece algumas funcionalidades que nos permitem fazer isso sem precisar de APIs do WordPress.
Em última análise, o objetivo que pretendemos alcançar é serializar dados transitórios usando uma chave que usa o ID de um usuário autenticado ou não autenticado.
E aqui está como fazer cada um deles.
A API do WordPress
Supondo que um usuário esteja autenticado com o WordPress, podemos usar a função get_current_user_id. É simples também.
Da referência de código:
Obter o ID do usuário atual
Podemos então usar essa função no construtor para definir uma propriedade que armazena o ID do usuário. E eu vou mostrar o código para isso momentaneamente, mas e a situação quando um usuário não está logado?
A API PHP
Quando se trata de armazenar informações de usuários não autenticados, ainda precisamos de uma maneira de identificá-los. Isso pode ser feito de várias maneiras usando vários valores mantidos pelo PHP para anexar à chave transitória.
Lembre-se, a chave deve ser exclusiva e, desde que seja exclusiva para o usuário no site, deve ser boa.
Duas funções que o PHP oferece são:
No que diz respeito ao segundo, ele não funcionará usando o IIS ou qualquer servidor baseado em Windows. Mas estou mencionando aqui como outra alternativa para hosts que são baseados em *nix (já que muitos são, especialmente no que diz respeito ao WordPress).
A função get_current_user é clara o suficiente:
Obtém o nome do proprietário do script PHP atual
Há algo mais a ser observado no manual também. Ele afirma explicitamente que “[retorna] o nome do proprietário do script PHP atual".
Além disso, get_current_user também pode não ser o que você está procurando, dependendo de como o servidor está configurado e qual usuário é o ‘proprietário’ do script PHP que está sendo executado no servidor.
Mas basta dizer que para este exemplo funciona. E aqui está o porquê: O ponto que estou tentando demonstrar é como usar valores que são exclusivos para um visitante que não está autenticado em um site para gerar uma chave da qual podemos extrair informações.
Como a chave é gerada é secundária ao código real.
Combinando tudo junto
Então, como é o código se formos aproveitar as funções acima? Ou seja, se mantivermos uma propriedade que contém o ID do usuário e depois fizer isso para usuários autenticados e não autenticados?
E isso lhe dará a funcionalidade necessária para criar um ID de usuário exclusivo para usuários autenticados e não autenticados.
E as chaves transitórias?
Sim – parte do que estamos discutindo é a criação de chaves transitórias exclusivas também.
Para fazer isso, achei fácil concatenar o ID do usuário que geramos acima e anexá-lo à chave usada ao serializar um transiente.
Então, com o valor que esta função retorna, podemos usá-lo para salvar os dados como transitórios usando chaves exclusivas.
Ainda outras opções
Como mencionado, simplesmente usar recursos embutidos no PHP pode não ser o caminho certo a seguir. Mas isso não significa que não existam outros valores que forneçam um valor exclusivo para o que você precisa.
Em casos como esse, é importante identificar como você deseja identificar seu usuário, qual sistema operacional ele está usando e qual conta de usuário possui o aplicativo.
Se isso não fornecer uma configuração única o suficiente (e é muito provável que não seja sob certas condições), o princípio ainda se aplica – você só precisará trocar a chamada funcional get_current_user() por algo que funcione melhor para vocês.