更改WP表CHARACTER_MAXIMUM_LENGTH是否有风险?

时间:2020-08-14 作者:Luke Sawczak

我制作了一个li\'l模块来帮助自己为各种客户开发网站,它提供了一个用于自定义帖子类型的简单模板。它允许我更容易地注册帖子类型,并处理许多默认值,否则我必须设置这些值才能获得一个好的帖子列表页面等等。

目前,它允许任意长度的post类型ID。我不记得三年前我写模块时为什么做出这个决定,但为了实现这一点,它必须扩展wp_posts -> post_type 如果所需的post_type 值大于CHARACTER_MAXIMUM_LENGTH.

嗯,lo&;瞧,今天我访问了一个我工作过的网站,不知怎么的(可能是5.5之前发布的汽车安全更新?),各种各样的东西都坏了。经调查post_type 值已被剪裁,导致查询没有结果。

WP是否重置了CHARACTER\\u MAXIMUM\\u长度?我所做的是不是以一种不稳定的方式来解决这个问题(例如,与剪切或哈希相反post_type 保留任意长度的值)?

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

这个post_type 字段是一个内部字段,您不应该给它指定需要更长列长度的值,也不需要面向用户。

WP允许您覆盖它的所有内容,从查询变量名称、重写规则到显示的措辞。

但更重要的是,您不应该修改WP核心。这也适用于数据库表模式。WP将在调用时覆盖您的更改dbDelta 并在更新过程中恢复规范数据库模式。此时您的列将被截断。您最多可以添加索引,添加自定义表也可以。

因此:

WP是否重置了CHARACTER\\u MAXIMUM\\u长度?

我所做的是不是以一种不稳定的方式来解决这个问题?

(与剪切或散列post\\u类型值以保留任意长度相反)

一个post_type, 也许您自动生成的post类型名称太冗长了。

我写了一个插件,注册了数千种自定义帖子类型,以回答网站上的一个问题,在耗尽20个字符的名称空间之前,您将面临主要的PHP内存和性能问题(为admin菜单生成和传输标记在200个字符后会出现问题,在某个点会中断,超过1000个字符后,尽管CPT的

相关推荐

$wpdb selects wrong database

我在另一个WordPress网站的文件夹中创建了一个新的WordPress网站。示例-主站点。com-mainsite。com/第二站点我创建了一个插件,并使用$wpdb 将数据插入数据库,插件将数据插入第一个/父站点的数据库。我使用的代码包括$wpdb 如下所示:$path = $_SERVER[\'DOCUMENT_ROOT\']; include $path . \'/wp-load.php\'; include $path . \'/wp-config.php\'; inc