Quelle serait la bonne façon d'attribuer un nom différent à chaque transitoire pour chaque instance d'un plugin utilisé comme widget ou shortcode?
Les transitoires ont une limite pratique sur la longueur de la clé (45 symboles ou quelque chose du genre), de sorte que l'utilisation de clés dynamiques a tendance à présenter un risque d'endommager les clés trop longtemps et de provoquer leur panne.
Une des pratiques courantes consiste à former une chaîne unique (combinaison du nom du plugin et du type de données en cours de sauvegarde, etc.) et à la hacher avec md5()
à utiliser. clé transitoire de longueur prévisible fixe.
Pour plus de clarté, vous pouvez utiliser le nom du plug-in pour préfixer le hachage md5. Il est donc clair d'où vient le transitoire lorsque vous le voyez dans la base de données.
La longueur maximale de clé mentionnée par Rarst a été étendue de 45
caractères à 172
caractères (voir https://core.trac.wordpress.org/ticket/13310 ), ce n'est donc plus un problème dans la plupart des cas.
Généralement, vous pouvez simplement créer un nom comme {plugin prefix}-{name of transient}-{unique id}
; Par exemple, abcd-remote-api-results-15
ou abcd-expensive-query-results-foo
L'identifiant unique sera généré différemment en fonction du contexte. Les widgets ont un ID d'instance associé ($this->number
), vous pouvez donc l'utiliser. Les codes abrégés ont une combinaison unique de paramètres, vous pouvez donc utiliser ce paramètre (md5( serialize( $attributes ) )
.