在 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');
}
Comments 1 条评论
有点意思…