Options temporaires dans WordPress : Notre meilleure option ?
En matière de programmation, l’idée de valeurs temporaires ou de variables temporaires ou de toute manière de stocker temporairement des données en mémoire n’a rien de nouveau.
Mais lorsque nous travaillons avec WordPress – qui est sans état – nous n’avons pas toujours ce luxe. Autrement dit, il ne s’agit pas simplement, disons, de jeter quelque chose dans la session en cours, de le lire, puis de le supprimer lorsque nous en avons fini.
Et c’est à ce moment-là que j’ai de plus en plus réfléchi à l’idée d’options temporaires, faute d’un meilleur terme bien sûr. Autrement dit, chaque fois que j’ai besoin de stocker une valeur à partir d’un chargement de page unique, ou d’une demande, pour lire dans un autre chargement de page, ou une autre demande, je jetterai temporairement la valeur dans la table d’options.
Options temporaires : un exercice et une représentation via l’esquisse rudimentaire
Est-ce bâclé? Peut-être. Avons-nous beaucoup d’autres choix? Cela dépend de la quantité de technologie de navigateur moderne que nous voulons utiliser. Ce n’est pas le but de ce post, cependant.
Le fait est qu’en raison de la façon dont WordPress fonctionne, je me demande si notre meilleure stratégie actuelle pour maintenir les valeurs temporaires les plus largement prises en charge dans toutes les installations est d’ajouter temporairement une valeur dans la table des options, de la lire, puis de la supprimer une fois qu’elle est été récupéré ?
Nos options pour les options temporaires
Personnellement, je n’ai pas d’opinion tranchée sur le fait que ce soit une mauvaise chose ou non. Si c’est la nature de la façon dont la fondation sur laquelle je travaille sur une solution fonctionne, alors je vais y aller.
Donc, tout d’abord, voici comment j’ai généralement procédé dans WordPress :
1 Créer une option temporaire
Tout d’abord, j’ai configuré une fonction qui est accrochée à update_option. Cela permet de regarder l’option qui est mise à jour, son ancienne valeur et sa nouvelle valeur.
<?php
public function init() {
add_action(
'update_option',
array( $this, 'manage_temporary_option' ),
10, 3
);
}
Dans la fonction, je peux regarder et voir si une option spécifique est enregistrée. Si ce n’est pas le cas, je peux simplement l’ignorer ; sinon, je peux y jeter un coup d’œil et commencer à travailler avec une option temporaire.
<?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
);
}
}
Mais que retiendrait l’option temporaire ?
2 Une option pour les options temporaires
Disons que vous avez une option dans un plugin qui est basculé. Cela nécessite peut-être que l’utilisateur saisisse certaines informations avant de passer au reste d’un processus.
Exemple : Supposons que vous travaillez sur une expérience de paiement et que vous souhaitez forcer les utilisateurs à créer un compte, mais qu’il existe une option permettant aux clients de passer à la caisse sans créer de compte.
Une implémentation que nous pourrions utiliser est celle-ci :
- Avant le chargement de la page de paiement, vérifiez si l’utilisateur peut payer en tant qu’invité.
- Si tel est le cas, stockez la valeur d’origine de l’option dans une option temporaire.
- Modifiez la valeur d’origine afin qu’elle nécessite la création d’un compte.
- Une fois le processus de paiement terminé, copiez la valeur de l’option temporaire dans l’option d’origine.
- Supprimez l’option temporaire.
C’est similaire à l’ensemble de l’exercice en C lorsque vous avez besoin d’un pointeur pour échanger deux nombres (pour celui qui s’en souvient ou celui qui l’a fait).
Notre meilleure option ?
Le processus décrit ci-dessus n’est qu’un exemple et n’est pas censé être le moyen définitif de maintenir des valeurs temporaires. Deuxièmement, l’exemple de paiement n’est pas destiné à associer ce message au commerce électronique.
Au lieu de cela, il est destiné à fournir un cas d’utilisation concret pour savoir quand stocker des options temporaires est utile et comment nous pouvons vouloir le faire.
La question initiale demeure donc : étant donné le fonctionnement de WordPress, le manque de sessions et sans être garanti certaines fonctionnalités du navigateur comme localStorage, les options temporaires dans la table des options sont-elles notre meilleure solution ?