PHP/MySQL 在 WordPress meta_value 中将“12345”编码为 'c11d38b47a44fcaa3035cb0342afb974'?

PHP/MySQL Encoding '12345' to 'c11d38b47a44fcaa3035cb0342afb974' in WordPress meta_value?

试图弄清楚某些 WordPress 插件如何在其元字段中生成这种类型的编码,以及我如何做相同类型的 encoding/decoding?

通过 WordPress 后端创建 post 后,我注意到在我的 wp_postmeta table 中它创建了两个字段,一个是非编码输入,在这个例子中,只是 12345,另一个带有 _ 前缀的 meta_key 被编码为 32 个字符的字符串 c11d38b47a44fcaa3035cb0342afb974.

有人对此有任何见解吗?这是什么类型的编码?这可以通过 PHP、MySQL 或两者进行编码吗?

12345这样的字符串编码成c11d38b47a44fcaa3035cb0342afb974的方法是什么?

wp_postmeta 是键/值数据存储。在一个简单的插件中,我不知道,Movie RatingYear 作为关于电影的 post 的元数据。在这种情况下,wp_postmeta 行可能包含

post_id  meta_key         meta_value

 1        movierating     PG
 1        year            2004
 2        movierating     R
 2        year            1992

post_id = 1 中描述的电影于 2004 年以 PG 评级上映。 post 2 中描述的电影于 1992 年以 R 级上映。你明白了。

一些插件作者使用合成 meta_key 值而不是文本值,大概是为了避免与其他键冲突。如果您的 32 个字符的十六进制字符串位于 meta_key 列中,那么就是这样。 (其他插件作者出于相同目的使用 myplugin_myattribute 值。有些作者根本不费心去避免冲突。)

如果十六进制字符串在 meta_value 列中,它可能意味着任何东西。 meta_key 的值是对其含义的微弱暗示。 阅读插件源代码或询问插件作者。它可能 是一个完整性散列(用于检测更改其他值的尝试)。

meta_key 中的前导下划线将其隐藏在 post 可从后端仪表板访问的编辑页面上的下拉列表、自定义字段项中。