wordpress上所有帖子的批量恢复修订
是否有wordpress插件可以根据日期或位置一次恢复多篇文章的修订 我有一个被黑客攻击的网站,每个帖子都被修改了。为了使所有内容干净,我需要将所有帖子恢复到5或6天前在线修订的地方wordpress上所有帖子的批量恢复修订,wordpress,Wordpress,是否有wordpress插件可以根据日期或位置一次恢复多篇文章的修订 我有一个被黑客攻击的网站,每个帖子都被修改了。为了使所有内容干净,我需要将所有帖子恢复到5或6天前在线修订的地方 提前谢谢 老实说,对于一个被黑客攻击的站点,最好的办法是从“干净”的时候恢复数据库/MySQL备份,或者只是手动恢复它们 也就是说,WordPress确实允许您使用检索修订 注意:这是复数函数,单数函数通过其ID获取修订。除非您知道所需修订的ID是什么,否则您不需要此函数。复数函数获取帖子的所有修订 现在,在您继续
提前谢谢 老实说,对于一个被黑客攻击的站点,最好的办法是从“干净”的时候恢复数据库/MySQL备份,或者只是手动恢复它们 也就是说,WordPress确实允许您使用检索修订 注意:这是复数函数,单数函数通过其ID获取修订。除非您知道所需修订的ID是什么,否则您不需要此函数。复数函数获取帖子的所有修订 现在,在您继续阅读之前,请备份您的站点 你备份了吗 确保你有备份 另外,确保它是一个有效的备份 现在,你有了备份 看看我提出的这个函数,它结合使用
wp\u get\u post\u revisions()
。同样,请确保在运行此功能之前备份。它会把帖子和帖子内容搞得一团糟,如果它停滞不前,它可能会变得一团糟使用风险自担
- 首先,它通过访问
。它需要该查询字符串才能运行https://yoursite.com/?restore_revisions=so_50959583_restore_revisions
- 然后确保当前用户具有管理员级别的权限
- 然后检查这个函数以前是否运行过,所以它不是每次都运行
- 现在,它运行一个标准来获取所有
。请注意,我已经推荐了其他类型的帖子,如果您愿意,可以添加这些帖子帖子
- 在循环内部,它检查是否存在修订,如果存在,则使用
将post更新为修订后的wp\u update\u post
post\u内容
- 如果它在这里失败,它将随着一条消息终止,以阻止设置我们在开始时检查的标志
- 如果运行平稳,它会设置
选项标志,使其不再运行so_50959583_restore_revisions_标志
- 此时,您应该删除代码
- 注意您可以删除选项标志,并将其设置为自定义插件,然后从中运行该功能
add_action( 'init', 'so_50959583_restore_revisions' );
function so_50959583_restore_revisions(){
if( isset( $_GET['restore_revisions'] ) && $_GET['restore_revisions'] == 'so_50959583_restore_revisions' ){
if( current_user_can( 'manage_options' ) ){
if( !get_option( 'so_50959583_restore_revisions_flag' ) ){
// This hasn't run before, run it now.
$args = array(
'post_type' => 'post', // Limit to just posts
'posts_per_page' => -1
);
$revision_query = new WP_Query( $args );
if( $revision_query->have_posts() ){
while( $revision_query->have_posts() ){
$revision_query->the_post();
if( $last_revision = array_shift( wp_get_post_revisions( $post->ID ) ) ){
// At least one revision existed.
$reverted_post = array(
'ID' => get_the_ID(), // Update current post in query
'post_content' => $last_revision->post_content // set content to previous content
);
// Update the existing post
if( !wp_update_post( $reverted_post ) ){
wp_die( 'Something went wrong' );
}
}
}
wp_reset_postdata();
}
// Whew, completed!
update_option( 'so_50959583_restore_revisions_flag', true );
}
}
}
}
我想再次强调,最好的办法是使用众多可用(通常是免费)插件中的一个来保存数据库备份,以防止出现类似问题
最后,如果你只有大约20-30篇文章,你应该手工完成。如果你有10000篇文章,你可能需要让这段代码“分块”完成,否则可能会超时
幸运的是,修订版由wordpress提供。我知道,你可以通过检查每篇文章来恢复内容。然而,由于我需要一次恢复多个修订,我想问是否有一种方法可以批量恢复,而不是逐个发布完美的答案!谢谢