通过从CSV导入创建用户,并从CSV分配用户ID

时间:2020-08-04 作者:pixelngrain

我需要从另一个平台导入用户数据。因为,出于某种原因,我必须保留相关的用户id,我必须保留csv中的用户id。我试过使用wp_insert_user() 然而,如果我在params数组中传递ID键,它只对更新有效,而对新用户无效。

Question:
有没有办法用关联的userid incsv文件创建用户?

1 个回复
SO网友:mozboz

不,在Wordpress代码库和调用(如wp_insert_user, 因为如上所述,用户ID是由数据库自动设置的,因为wp\\U users中的ID字段是Wordpress中的自动增量字段。

因此,要想做你想做的事,你有两个选择:

1。使用手动SQL语句进行随动更新,以更改IDwp_insert_user, 并在运行时更新用户ID。例如,在伪代码中,如下所示:

从CSV获取一行,插入Wordpress,例如。wp_insert_user()

  • 获取新用户的ID
  • 运行SQL查询以手动更改wp\\U users表**上的ID,并确保在wp\\U usermeta、wp\\U options等wp可能已插入某些行的其他任何位置更新该ID
  • 为此,您可能应该将此表上的自动增量值设置为一个合理的值,即larger than 您将要插入的任何ID。这样可以避免ID冲突。

    2。直接插入wp\\U用户

    不能使用SQL将数据直接插入wp\\U用户except 你必须很好地理解所有字段的含义,这超出了我在这里所能回答的范围,因此这很棘手,如果你这样做,你需要非常小心。E、 g.您可以这样做:

        insert into wp_users (ID, user_login, user_pass, user_nicename, user_email, user_url, user_registered, user_activation_
    key, user_status, display_name) 
        values (12345, \'foo\', \'bar\', \'nicename\', \'[email protected]\', \'http://url.com\', \'00-00-00\', \'key\', 0, \'display_name\');
    
    BUT, this is dangerous and complicated 因为您必须根据Wordpress对这些字段的内部使用情况自己找出这些字段的正确值,特别是:

    3。改为更改内容的ID

    改为更改内容中的用户ID。实现您想要的可能更好的方法是:

    从CSV中读取一行,插入用户,例如。wp_insert_user

  • 从CSV中获取新的WP ID(例如,在新的数据库表中)列表中记录WP用户ID和旧ID的查找表。现在,当您将此用户的任何内容插入Wordpress时,您可以使用此查找表将用户ID字段更改为该用户的正确新Wordpress ID。

    这种选择更好,即使您已经插入了所有内容,因为要弄清楚Wordpress如何处理新用户非常复杂。

    在wp\\u users表中设置下一个自动用户ID/自动增量值:

    无论您在做什么,您可能需要考虑更改wp\\u用户上的ID自动增量字段,以避免ID冲突。您可以通过以下方式实现:

    ALTER TABLE wp_users AUTO_INCREMENT = 1000000; 
    

  • 相关推荐

    在Cron作业中使用时,GET_USERS();是一个未定义的函数

    我正在使用Wordpress cron每隔24小时更新每个用户的一些usermeta。为此,我使用宿主提供商提供的接口创建了一个cronjob。Cron运行,但由于对未定义函数get\\u users()的调用出现致命错误,代码无法执行。我在许多其他地方使用过这个函数,但我不太了解,如何确保它在这里也能工作。我只需要获取使用过的id,循环每个用户id,然后循环每个用户id的每个帖子。代码。问题在第3行:<?php $authors=get_users(array( \'fields