在将帖子插入数据库之前,我应该在哪里挂接才能更改帖子的ID?

时间:2018-12-20 作者:coolpasta

这个ID 列为auto-increment 在数据库中,似乎是这样。每当将新行添加到wp_posts, 这个ID 自动递增。

如何创建预生成的IDwp_insert_post 将使用?

我的代码如下所示:

function generateRandomPostID( $id ) {
     return $id + generateRandomInt(); //assuming it\'s an int.
}
add_filter( \'insertion_of_post_filter_ID\', \'generateRandonPostID\' );
以下是我的意图和设置:

我正在尝试使用WordPress附带的WXR导出器生成导出数据,稍后将使用WXR导入器导入。不幸的是,每当我生成导出数据时,帖子很有可能被复制——假设客户的站点上已经有相同ID的帖子(很有可能),我的帖子就不会被导入。

我会有很多导出文件,都在同一个类别内,而且很有可能重复,因为对于每个导出文件,我都会从新安装WordPress开始导出。重复的帖子ID显然是不可能的。

至于解决方案,我相信我不能回去追溯主动更改帖子ID,因为已经建立了条款和关系,如果我的帖子ID发生更改,所有的元/关系都会突然被删除,或者可能会被删除wp_update_post 这也很好,但由于我需要编写功能来直接更改帖子的ID,所以听起来并没有那么好。

简单易行的方法就是告诉WordPress,我希望创建的任何帖子的ID都是高整型的,比如63467 当它创建帖子时,与我的客户已经安装的内容发生冲突的可能性极低。

This can be a hack and it\'s no problem. 这是我正在构建的一个仅供开发使用的内部工具,该功能的唯一目的是为帖子生成一个唯一的ID。它不需要尊重任何东西,只需要确保元/关系以及通常创建/链接的任何东西wp_insert_post 也得到了照顾。

这意味着我不必为出口商或进口商编写代码,但wp_insert_post, 我不能确切地指出我应该去哪里。这个import_id 看起来确实不错-它说它将尝试使用该ID导入它,如果它已经存在,只需默认为增量,但到目前为止我还没有成功。

1 个回复
最合适的回答,由SO网友:Justin Waulters 整理而成

我这样做了,它给了我一个关于布景的帖子import_id:

    $my_post = array(
        \'import_id\' => 1234567890,
        \'post_title\'    => \'Custom ID\',
        \'post_content\'  => \'This post has a custom ID.\',
        \'post_status\'   => \'publish\',
    );
    wp_insert_post( $my_post );
此外,这将把ID/索引提高到您在import\\u ID中设置的整数,以便后续帖子的ID将从那里递增(即1234567891、1234567892等)-允许您使用大整数作为带有自定义ID的帖子的基数。

请试一试,让我知道进展如何。