更新USER_LOGIN、USER_Nicename和Display_Name

时间:2016-01-06 作者:wired

我从WooCommerce网站导入了大约600条用户记录,但他们的用户名是电子邮件,我需要他们的用户名作为第一个用户名。最后的

因此,我试图找到一种SQL方法来更新wp\\u users表中的所有user\\u login、user\\u nicename和display\\u name字段,以及wp\\u usermeta表中的first\\u name和last\\u name信息。

user\\u登录应采用以下格式:first。last

  • 用户名应采用以下格式:first last
  • 显示名称应采用以下格式:first last
    • 这也应仅适用于具有“客户”角色的用户(meta_key= wp_capabilities meta_value= a:1:{s:8:"customer";b:1;}wp_usermeta 表)。

      我了解基本sql,但在处理多个表时却不懂(

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

    您不需要SQL,也不应该在核心函数完成任务时使用它。部分原因是表的复杂性(以及它们可能发生变化的事实)。

    1. Query your users,
    2. loop through pulling metadata,
    3. and update

      $u = new WP_User_Query( 
        array( 
          \'role\' => \'customer\' 
        ) 
      );
      foreach ($u->results as $user) {
        $fn = get_user_meta($user->ID,\'first_name\',true);
        $ln = get_user_meta($user->ID,\'last_name\',true);
        $user->data->user_login = strtolower("$fn,$ln");
        $user->data->user_nicename = strtolower("$fn-$ln");
        $user->data->display_name = "$fn $ln";
        wp_update_user($user);
      }
      
      你真的应该创造一些逻辑来检查这一点$fn$ln 不为空,如果其中一个或两个为空,则进行补偿。

      600个用户应该很快更新