如何使用wp-cli更改USER_LOGIN?

时间:2015-07-04 作者:kqw

如何使用更改用户名wp-cli?

这不起作用:

wp user update old_login --user-login=new_login

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

设计不允许:

如果我们试图通过电子邮件更改用户登录:

wp user update [email protected] --user_login=mary_new
或通过用户id:

wp user update 123 --user_login=mary_new
我们收到以下警告:

无法更改用户登录。

这就是原因:

if ( isset( $assoc_args[\'user_login\'] ) ) {
    WP_CLI::warning( "User logins can\'t be changed." );
    unset( $assoc_args[\'user_login\'] );
}
user update method.

可能的解决方法:

Custom SQL queries:

如果我们只想针对wp_users 表和user_login 字段,可以使用以下命令运行SQL查询:

wp db query "UPDATE wp_users SET user_login = \'mary_new\' WHERE user_login = \'mary\'"
但我们必须确保用户登录unique.

我经历过这样的问题:

wp db query "UPDATE wp_users u, 
    ( SELECT 
          COUNT(*) as number_of_same_login_users
          FROM wp_users u 
          WHERE user_login = \'mary_new\' 
    ) tmp 
    SET u.user_login = \'mary_new\' 
    WHERE 
            u.user_login = \'mary_old\' 
        AND tmp.number_of_same_login_users = 0"
强制user_login 字段,如果没有用户具有相同的用户登录名,则仅通过更新。

This unrelated answer 帮助我使用子查询构造更新。

在一行中有相同的命令:

wp db query "UPDATE wp_users u, ( SELECT COUNT(*) as number_of_same_login_users FROM wp_users WHERE user_login = \'mary_new\' ) tmp SET u.user_login = \'mary_new\' WHERE u.user_login = \'mary_old\' AND tmp.number_of_same_login_users = 0"
但这种查询应该在自定义命令中;-)

请注意,表前缀可能不同于wp_.

Custom WP-CLI commands:

就像在Commands Cookbook, 可以创建自定义WP-CLI命令。

我们可以尝试构建如下自定义命令:

    WP_CLI::add_command( \'wpse_replace_user_login\', \'WPSE_Replace_User_Login\' );
或:

    WP_CLI::add_command( \'wpse_user\', \'WPSE_User_Command\' );
在哪里WPSE_User_Command 扩展User_Command 班这需要进一步的工作。

SO网友:kqw

search-replace 但如果old_login 出现在数据库的其他上下文中:

wp search-replace old_login new_login
但在跑步之前

wp sql dump
wp search-replace old_login new_login --dry-run
创建SQL转储并查看要替换的内容。

结束

相关推荐

本地WordPress安装不会验证wp-cli校验和检查以及如何修复该问题。

我今天安装了wp cli,在测试时遇到了一个令人惊讶的问题。在“wp core verify checksums”上显示以下错误:Warning: File doesn\'t verify against checksum: wp-includes/css/media-views.css Warning: File doesn\'t verify against checksum: wp-includes/css/media-views.min.css Warning: File does