Opzioni temporanee in WordPress: la nostra migliore opzione?
Quando si tratta di programmazione, l’idea di valori temporanei o variabili temporanee o di qualsiasi modo di memorizzare temporaneamente i dati in memoria non è una novità.
Ma quando lavoriamo con WordPress, che è apolide, non abbiamo sempre quel lusso. Cioè, non si tratta semplicemente, diciamo, di inserire qualcosa nella sessione corrente, leggerlo e quindi rimuoverlo quando abbiamo finito.
Ed è allora che ho riflettuto sempre di più sull’idea di opzioni temporanee, in mancanza ovviamente di un termine migliore. Cioè, ogni volta che devo memorizzare un valore da un caricamento di una singola pagina, o richiedere, per leggere un altro caricamento di pagina o un’altra richiesta, inserirò temporaneamente il valore nella tabella delle opzioni.
Opzioni temporanee: un esercizio e una rappresentazione tramite schizzi rudimentali
È sciatto? Forse. Abbiamo molte altre scelte? Dipende da quanta tecnologia moderna del browser vogliamo utilizzare. Non è questo il punto di questo post, però.
Il punto è che, a causa del modo in cui funziona WordPress, mi chiedo se la nostra attuale strategia migliore per mantenere i valori temporanei più ampiamente supportati in tutte le installazioni sia aggiungere temporaneamente un valore nella tabella delle opzioni, leggerlo e quindi eliminarlo una volta che è stato recuperato?
Le nostre opzioni per le opzioni temporanee
Personalmente, non ho un’opinione forte sul fatto che questa sia una cosa negativa o meno. Se è la natura di come funziona la base su cui sto lavorando a una soluzione, allora la seguirò.
Quindi, in primo luogo, questo è il modo in cui in genere l’ho fatto all’interno di WordPress:
1 Creazione di un’opzione temporanea
Innanzitutto, ho impostato una funzione che è collegata a update_option. Ciò consente di esaminare l’opzione in fase di aggiornamento, il suo vecchio valore e il suo nuovo valore.
<?php
public function init() {
add_action(
'update_option',
array( $this, 'manage_temporary_option' ),
10, 3
);
}
Nella funzione, posso guardare e vedere se un’opzione specifica viene salvata. In caso contrario, posso semplicemente ignorarlo; in caso contrario, posso dargli un’occhiata e iniziare a lavorare con un’opzione temporanea.
<?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
);
}
}
Ma cosa conterrebbe l’opzione temporanea?
2 Un’opzione per le opzioni temporanee
Supponiamo che tu abbia un’opzione in un plug-in che è attivato. Forse richiede all’utente di inserire alcune informazioni prima di passare al resto di un processo.
Esempio calzante: supponiamo che tu stia lavorando a un’esperienza di pagamento e desideri costringere gli utenti a creare un account, ma esiste un’opzione che consente ai clienti di effettuare il pagamento senza creare un account.
Un’implementazione che potremmo usare è questa:
- Prima che la pagina di pagamento venga caricata, verifica se l’utente può effettuare il pagamento come ospite.
- In tal caso, memorizzare il valore originale dell’opzione in un’opzione temporanea.
- Modifica il valore originale in modo che richieda la creazione di un account.
- Una volta terminato il processo di pagamento, copia il valore dall’opzione temporanea all’opzione originale.
- Elimina l’opzione temporanea.
È simile all’intero esercizio in C quando hai bisogno di un puntatore per scambiare due numeri (per chi se lo ricorda o chi l’ha fatto).
La nostra migliore opzione?
Il processo sopra delineato è solo un esempio e non vuole essere il modo definitivo per mantenere valori temporanei. In secondo luogo, l’esempio di checkout non ha lo scopo di associare questo post all’eCommerce.
Invece, ha lo scopo di fornire un caso d’uso concreto per quando la memorizzazione di opzioni temporanee è utile e come potremmo volerlo fare.
Quindi la domanda originale rimane: dato il modo in cui funziona WordPress, la mancanza di sessioni e senza la garanzia di alcune funzionalità del browser come localStorage, le opzioni temporanee nella tabella delle opzioni sono il nostro modo migliore per andare?