我的目标是让WordPress使用唯一的标识符,而不是主键上的自动递增,这是目前WP的标准方法,以便促进多个WP网站的集成。
理由是,我需要一个万能的钥匙,至少在几个WordPress网站的范围内。其想法是在站点之间同步帖子和其他数据,以便在任何站点上创建的帖子也可用于其他所有站点。不同的网站将位于不同位置的不同服务器上。
该问题
WP所依赖的自动增量功能将明显导致在每个WP站点的对应表中为不同的帖子使用相同的键,即每个站点中的第一篇帖子将是
1
, 虽然我需要它在所有安装中都是唯一的,以便我可以将每个安装中的数据合并到其他每个网站中。
当WP检索主键时,它将这些值转换为整数。当PHP从MySQL接收到BIGINT时,它通常会将其作为float进行管理,因为它大于PHP的int限制,但在PHP中将其转换为int会产生截断它的效果。
到目前为止我所做的工作,我目前正在使用PHP的uniquid()
函数生成键,该键生成一个13个字符的字符串,然后在1388661576514060
(今晚),比BIGINT
在MySQL中(最多18446744073709551615
), 这很酷,我已经应用了一个覆盖wpdb
成功地将其写入数据库,但PHP的整数限制要小得多,最多2147483647
.
通过重写insert_replace
中的帮助器函数和查询函数wpdb
使用新类中的函数,这些函数设置并记住要用作主键的唯一值。
我目前的目标是尝试删除(int)
铸造,看看这是否解决了我的问题,虽然我不希望对WP核心进行更改,但似乎这可能是我唯一的选择。
我很关心采取这种方法,因为虽然它可能会解决我眼前的需要,但可能会在其他地方造成更严重的问题,我想知道以前是否有人尝试过类似的方法。
此外,我很好奇为什么开发人员会使用特定的强制转换——我喜欢PHP松散的数据类型,所以除非有特定的原因,否则我不会这样做。我已经充分尊重了其他程序员的理由,试图找出他们是什么,这就是问题所在。
我真的不想因为所有明显的原因而去破解核心,有没有人能提供一些关于如何解决这个问题的想法或想法,或者提供一种不同的方法来解决这个问题?