AI 摘要

在这个教程中,我们将揭示如何轻松解决WordPress用户评论信息不自动同步更新的问题。你是否曾为更新昵称而烦恼,发现旧评论依然显示老名称?别担心,利用用户的独特ID,我们能够快速实现评论作者信息的自动同步。通过几行简单代码,你将能确保所有历史评论完美契合用户最新资料,让你的评论系统真正聪明且个性化。准备好提升你的网站用户体验了吗?

在 WordPress 中,修改用户资料后希望之前的评论也同步更新显示名称,需要注意以下关键点:

WordPress不会自动更新已发布的评论中的用户显示名称
新评论会使用新名称,但旧评论仍保留修改前的名称

也就是说如果我现在修改了昵称,我之前的评论是不会有任何变化的,这显然不是我们希望的。

不过解决这个问题并不难,因为每一个注册的用户都有一个独一无二的用户id【1】

这里的核心原理是 ​利用 WordPress 数据库【2】中的user_id字段【3】建立用户与评论的关联,并在用户资料更新时,自动同步修改其所有历史评论的作者信息。

询问ai如何修改代码很容易得到结果,只需要将下面这段代码加到主题目录的function.php文件中即可。

/**
 * 当用户更新个人信息时,同步更新其历史评论的作者信息
 */
add_action('profile_update', 'sync_user_comments_on_profile_update', 10, 2);

function sync_user_comments_on_profile_update($user_id, $old_user_data) {
    global $wpdb;
    
    $user = get_userdata($user_id);
    if (!$user) return;

    // 直接使用SQL更新(效率更高)
    $wpdb->query(
        $wpdb->prepare(
            "UPDATE {$wpdb->comments} 
            SET comment_author = %s, 
                comment_author_email = %s, 
                comment_author_url = %s 
            WHERE user_id = %d",
            $user->display_name,
            $user->user_email,
            $user->user_url,
            $user_id
        )
    );

    // 清除评论缓存(如果有)
    wp_cache_delete('comments_user_' . $user_id, 'comment');
}