Transient unique names

时间:2013-04-30 作者:PoseLab

对于用作小部件或短代码的插件的每个实例,为每个瞬态指定不同名称的正确方法是什么?

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

瞬态对键的长度(45个符号或类似的符号)有实际限制,因此使用动态键往往会带来键过长并出现故障的风险。

一种常见的做法是形成唯一的字符串(例如插件名称和正在保存的数据类型的组合等),并使用md5() 用作固定可预测长度的临时密钥。

为了清晰起见,可以使用插件名称作为md5哈希的前缀,所以当在数据库中看到transient时,很清楚它来自哪里。

SO网友:Ian Dunn

Larst提到的密钥长度限制是从45 字符到172 字符(请参见https://core.trac.wordpress.org/ticket/13310), 因此,在大多数情况下,这不再是一个问题。

通常,您可以创建一个名称,如{plugin prefix}-{name of transient}-{unique id}; e、 g。,abcd-remote-api-results-15, 或abcd-expensive-query-results-foo

唯一ID将根据上下文以不同方式生成。小部件具有与之关联的实例ID($this->number), 所以你可以用它。短码具有唯一的参数组合,因此可以对其进行哈希运算(md5( serialize( $attributes ) ).

结束