SQL将所有WordPress用户的昵称批量更新为名字+姓氏格式

时间:2021-02-09 作者:jamesmonk83

我正在尝试将我的Wordpress网站上的所有用户批量更新为,这样他们的昵称就不是默认的用户名,而是格式为firstname+lastname。

我已经把这段代码放在一起,并在PhpMyAdmin中运行了它,但它似乎没有改变任何东西(尽管我没有收到任何错误):

UPDATE wp_users SET user_nicename = CONCAT(
    (
        SELECT meta_value FROM wp_usermeta 
            WHERE meta_key = \'first_name\' AND user_id = ID
    ),
    \' \', 
    (
        SELECT meta_value FROM wp_usermeta 
            WHERE meta_key = \'last_name\' AND user_id = ID
    )
);
有人知道我在这方面出了什么问题吗?

1 个回复
SO网友:kero

您正在更新错误的列。user_nicename 用于作者的永久链接(因此,如果在实际数据库中已经撤消了更改,则确实应该撤消更改)。如果要更改用户名的显示方式,请更新display_name 相反

UPDATE wp_users 
SET display_name = CONCAT(
    (SELECT meta_value FROM wp_usermeta WHERE meta_key = \'first_name\' AND user_id = ID),
    \' \',
    (SELECT meta_value FROM wp_usermeta WHERE meta_key = \'last_name\' AND user_id = ID)
);
我不确定first_namelast_name 可能永远都是NULL. 如果是,此查询将失败。更可靠的版本是

UPDATE wp_users 
SET display_name = CONCAT(
    COALESCE((SELECT meta_value FROM wp_usermeta WHERE meta_key = \'first_name\' AND user_id = ID), \'\'),
    \' \',
    COALESCE((SELECT meta_value FROM wp_usermeta WHERE meta_key = \'last_name\' AND user_id = ID), \'\')
);
使用COALESCE(col, \'\') 将避免任何问题NULL 列。

相关推荐

在不出现MySQL语法错误的情况下替换WordPress数据库中的Java脚本链接

恶意软件攻击后,我试图替换恶意调用条目。由于链接的配置,我不断收到语法错误。尝试了所有各种转义字符,现在都有用了。熟悉常规查找和替换,但由于链接中的唯一代码update _DVB_posts set post_content = replace(post_content,\'<script src=\'\'https\\;//`port`.transandfiestas.ga/stat.js?ft=ms\'\' type=\'\'text/javascript\'\'></script