如何通过编程在WordPress文章修订版中设置当前用户为修改者?
解决WordPress批量更新文章时修订记录显示正确操作者的问题
问题根源在于你运行脚本的环境中,WordPress的当前用户是匿名用户(ID 0),所以修订记录会默认关联到这个用户。而post_author参数确实会修改文章的原始作者,这不是你需要的效果。
正确的做法是在更新文章前,临时切换到指定的操作用户,让WordPress将修订记录关联到该用户,且不会改动文章的原始作者:
- 确定你要记录的操作用户ID(比如管理员用户ID为1)
- (可选)保存当前用户ID,后续需要恢复原有状态时使用
- 使用
wp_set_current_user()切换到目标用户 - 执行
wp_update_post()更新文章 - (可选)如果是在已有登录用户的环境下,切换回原来的用户
代码示例
// 定义要作为修订操作者的用户ID $operator_user_id = 1; // 保存当前用户ID(如果需要恢复原有状态) $original_user_id = get_current_user_id(); // 切换到目标用户 wp_set_current_user($operator_user_id); // 准备更新参数(只传ID和post_content,不要传post_author) $update_args = array( 'ID' => $post_id, 'post_content' => '更新后的文章内容' ); // 执行更新 wp_update_post($update_args); // (可选)切换回原来的用户 wp_set_current_user($original_user_id);
关键说明
wp_set_current_user()会临时改变WordPress的当前上下文用户,此时执行wp_update_post()生成的修订记录,其修改者会自动关联到这个用户,不会改动文章的原始作者。- 确保指定的
$operator_user_id对应的用户存在,并且拥有编辑该文章的权限,否则可能会导致更新失败或权限错误。 - 如果你的脚本是在CLI环境或定时任务中运行(原本就没有登录用户),可以省略切换回原用户的步骤。
内容的提问来源于stack exchange,提问作者vespino
相关产品推荐
相关产品推荐

