Opções temporárias no WordPress: nossa melhor opção?
Quando se trata de programação, a ideia de valores temporários ou variáveis temporárias ou qualquer forma de armazenar dados temporariamente na memória não é novidade.
Mas ao trabalhar com o WordPress – que é sem estado – nem sempre temos esse luxo. Ou seja, não é simplesmente uma questão de, digamos, jogar algo na sessão atual, lê-lo e removê-lo quando terminarmos.
E é aí que tenho pensado cada vez mais na ideia de opções temporárias, por falta de um termo melhor, é claro. Ou seja, sempre que eu precisar armazenar um valor de um único carregamento de página, ou solicitação, para ler em outro carregamento de página, ou outra solicitação, lançarei temporariamente o valor na tabela de opções.
Opções temporárias: um exercício e representação via esboço rudimentar
Isso é desleixado? Pode ser. Temos muitas outras opções? Depende de quanto da tecnologia de navegador moderno queremos usar. Esse não é o objetivo deste post, no entanto.
O ponto é que, devido à maneira como o WordPress funciona, eu me pergunto se nossa atual e melhor estratégia para manter os valores temporários mais amplamente suportados nas instalações é adicionar temporariamente um valor à tabela de opções, lê-lo e excluí-lo assim que for foi recuperado?
Nossas opções para opções temporárias
Pessoalmente, não tenho uma opinião forte sobre se isso é uma coisa ruim ou não. Se for a natureza de como funciona a base sobre a qual estou trabalhando em uma solução, então irei com ela.
Então, primeiro, é assim que eu normalmente faço isso no WordPress:
1 Criando uma opção temporária
Primeiro, configurei uma função que está ligada a update_option. Isso permite ver a opção que está sendo atualizada, seu valor antigo e seu novo valor.
<?php
public function init() {
add_action(
'update_option',
array( $this, 'manage_temporary_option' ),
10, 3
);
}
Na função, posso olhar e ver se uma opção específica está sendo salva. Se não, então posso simplesmente ignorá-lo; caso contrário, posso dar uma olhada e começar a trabalhar com uma opção temporária.
<?php
public function manage_temporary_option( $option_name, $old_value, $new_value) {
if ('an_irrelevant_option' !== $option_name) {
return;
}
$url = 'page-from-which-we-expect-to-come.php';
if ($url === $_SERVER['REQUEST_URI']) {
update_option(
'our_temporary_option',
$new_value
);
}
}
Mas qual seria a opção temporária?
2 Uma opção para opções temporárias
Digamos que você tenha uma opção em um plug-in que seja alternada. Talvez exija que o usuário insira algumas informações antes de percorrer o restante de um processo.
Caso em questão: digamos que você esteja trabalhando em uma experiência de checkout e queira forçar os usuários a criar uma conta, mas há uma opção que permite que os clientes façam checkout sem criar uma conta.
Uma implementação que poderíamos usar é esta:
- Antes que a página de checkout seja carregada, verifique se o usuário pode efetuar o checkout como convidado.
- Em caso afirmativo, armazene o valor original da opção em uma opção temporária.
- Altere o valor original para que exija que eles criem uma conta.
- Feito o processo de checkout, copie o valor da opção temporária para a opção original.
- Exclua a opção temporária.
É semelhante a todo o exercício em C quando você precisa de um ponteiro para trocar dois números (para quem se lembrar ou para quem fez isso).
Nossa melhor opção?
O processo descrito acima é apenas um exemplo e não pretende ser a forma definitiva de manter valores temporários. Em segundo lugar, o exemplo de checkout não pretende associar esta postagem ao comércio eletrônico.
Em vez disso, pretende fornecer um caso de uso concreto para quando armazenar opções temporárias é útil e como podemos querer fazê-lo.
Portanto, a pergunta original permanece: Dada a maneira como o WordPress funciona, a falta de sessões e sem a garantia de certos recursos do navegador, como localStorage, as opções temporárias na tabela de opções são o melhor caminho a seguir?