wp_insert_user if user exists

时间:2019-01-27 作者:Xavier C.

我已经这样做了将近两个小时了,我相信我已经接近了,但找不到推动它工作的方法。我从头开始构建了一个模块,用于从csv文件导入用户,用户创建工作正常,我对此感到满意。

为了方便处理,我希望能够更新用户,并且始终使用相同的csv文件。wp\\u update\\u用户不执行任何操作,没有错误,但不会更新数组中的值。update\\u user\\u meta也不起作用。我想这是我返回$user\\u id的方式,因为该id不包含在数组中。。。

         $userdata = array(      
            \'user_login\' => $username,
            \'nickname\' => $username,
            \'user_nicename\' => $user_nicename,
            \'user_email\' => $user_email,
            \'first_name\' => $prenom,
            \'last_name\' => $nom,
            \'user_registered\' => date( \'Y-m-d H:i:s\' ),
            \'display_name\' => $username,
            \'show_admin_bar_front\' => false,
            \'role\' => \'subscriber\',
            \'admin_color\' => "fresh",
            \'rich_editing\' => "true", 
            );

        // check if user exists
        if (username_exists($username)) {
            $user_id = $userdata[0]->ID;
            $user_id = wp_update_user( $userdata );
            update_user_meta( $user_id, \'region\', $region );
        } else {
        // create new user
            $user_id = wp_insert_user($userdata);
            wp_new_user_notification( $user_id, null, \'both\' );
            update_user_meta( $user_id, \'region\', $region );
        }
编辑:如果有人在寻找类似的问题,那么下面是修复方法:

    if (username_exists($username)) {
        $the_user = get_user_by(\'login\', $username);
        $user_id = $the_user->ID;

       if (!is_wp_error( $user_id )){
           $push_id = array(\'ID\' => $user_id);
           $merge = array_merge($userdata, $push_id);
           $user_id = wp_update_user( $merge );
           update_user_meta( $user_id, \'region\', $region );
       }
       else {                                       
       $html_update = "Broken";
       }
     } else {
     // create new user
        $user_id = wp_insert_user($userdata);
        wp_new_user_notification( $user_id, null, \'both\' );
        update_user_meta( $user_id, \'region\', $region );
     }
谢谢你birgire这帮我找到了解决办法

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

使用以下内容更新用户时:

$user_id = wp_update_user( $userdata );
您需要在中设置用户ID$userdata.

还要确保验证$user_id 的输出wp_update_user() 因为它可以是整数或WP_Error, 在中使用之前update_user_meta().

可以使用is_wp_error( $user_id ) 检查是否$user_id 是的实例WP_Error

PS:

确保在开发时查看PHP错误。

当新的致命错误保护(WSOD)时kicks in 在5.1之后,可能需要通过定义常量来禁用它:

WP_DISABLE_FATAL_ERROR_HANDLER 
作为true 在里面wp-config.php 在dev安装时。

相关推荐

WP-API:获取多个类别的帖子

比方说,我有两个类别,\'color\' 和\'temperature\'. 每一个都有许多子类别。当我转到如下URL时,Wordpress在显示请求类别中的帖子方面做得很好:http://www.example.com/category/pink+warm 现在我想对json-rest-api 插件,通过REST请求。有可能吗?如何使用REST请求获取多个类别的帖子(不是在任何一个类别中,而是在所有请求的类别中)?我尝试了不同的URI,但失败了。