如何在WordPress中恢复我的ID?

时间:2015-07-13 作者:showkey

当我用命令从wordpress中选择id时select id from wp_posts;,输出如下:

| 1382 |
| 1384 |
| 1386 |
| 1388 |
| 1392 |
| 1396 |
| 1399 |
| 1401 |
| 1403 |
| 1406 |
+------+
我想将我的id设置为连续,例如

| 1382 |
| 1383 |
| 1384 |
| 1385 |
+------+
以下三行mysql使id连续。

ALTER TABLE `wp_posts` DROP `ID`;
OPTIMIZE TABLE `wp_posts`;
ALTER TABLE `wp_posts` ADD `ID` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
但我在wordpress中丢失了每篇文章的类别归属。如何修复它?

1 个回复
SO网友:Pieter Goosen

我不知道你这样做的意图是什么,但这里有几个非常重要的事情需要考虑

修订、草稿、菜单、自定义帖子类型和附件保存在wp_posts 表,不仅仅是post 帖子类型帖子,所以你永远不会有两个帖子有ID,区别是1

并非所有postdata都保存在wp_posts 桌子Wordpress使用wp_postmeta 表以保存有关属于帖子的附件的信息、保存自定义字段、保存有关模板的信息(用于page 职位类型)等。还有wp_term_relationships 表,用于在职位及其分配的术语之间建立关系。在所有情况下,Wordpress都使用post ID来建立wp_posts 还有另外两个db表。正在更改帖子IDwp_posts 打破所有这些关系

MYSQL数据库有一个巨大的最大ID整数,您很可能永远不会填充它。关于这件事的详细内容,请参见this post on SO

总之,如果你没有数据库的备份,你很可能会被填满。由于Wordpress使用帖子ID来建立关系,并且您已经更改了帖子ID,因此重新建立关系的唯一可靠方法是手动进行。我看不到任何其他可靠的方法可以做到这一点

如果您确实需要更改帖子ID,最好的选择是使用如下函数wp_update_post并编写一个包装函数来完成所需的操作。这是一个非常昂贵的操作,因此您可能会在一个巨大的数据库上超时或耗尽内存,因此您需要将操作分解为可管理的块,并多次运行该函数。

结束

相关推荐

Archive not sorting correctly

我有一个名为“cif事件”的自定义帖子类型,我想按wpcf开始时间中的值进行排序。我在函数中添加了以下内容。php:add_filter(\'pre_get_posts\', \'set_order_for_archives\'); function set_order_for_archives($q) { if ($q->is_post_type_archive(\'cif-groups\')) { $q->set(\'orderby\', \'