wordpress上所有帖子的批量恢复修订

wordpress上所有帖子的批量恢复修订,wordpress,Wordpress,是否有wordpress插件可以根据日期或位置一次恢复多篇文章的修订 我有一个被黑客攻击的网站,每个帖子都被修改了。为了使所有内容干净,我需要将所有帖子恢复到5或6天前在线修订的地方 提前谢谢 老实说,对于一个被黑客攻击的站点,最好的办法是从“干净”的时候恢复数据库/MySQL备份,或者只是手动恢复它们 也就是说,WordPress确实允许您使用检索修订 注意:这是复数函数,单数函数通过其ID获取修订。除非您知道所需修订的ID是什么,否则您不需要此函数。复数函数获取帖子的所有修订 现在,在您继续

是否有wordpress插件可以根据日期或位置一次恢复多篇文章的修订

我有一个被黑客攻击的网站,每个帖子都被修改了。为了使所有内容干净,我需要将所有帖子恢复到5或6天前在线修订的地方


提前谢谢

老实说,对于一个被黑客攻击的站点,最好的办法是从“干净”的时候恢复数据库/MySQL备份,或者只是手动恢复它们

也就是说,WordPress确实允许您使用检索修订

注意:这是复数函数,单数函数通过其ID获取修订。除非您知道所需修订的ID是什么,否则您不需要此函数。复数函数获取帖子的所有修订

现在,在您继续阅读之前,请备份您的站点

你备份了吗

确保你有备份

另外,确保它是一个有效的备份

现在,你有了备份

看看我提出的这个函数,它结合使用
wp\u get\u post\u revisions()
。同样,请确保在运行此功能之前备份。它会把帖子和帖子内容搞得一团糟,如果它停滞不前,它可能会变得一团糟使用风险自担

  • 首先,它通过访问
    https://yoursite.com/?restore_revisions=so_50959583_restore_revisions
    。它需要该查询字符串才能运行
  • 然后确保当前用户具有管理员级别的权限
  • 然后检查这个函数以前是否运行过,所以它不是每次都运行
  • 现在,它运行一个标准来获取所有
    帖子
    。请注意,我已经推荐了其他类型的帖子,如果您愿意,可以添加这些帖子
  • 在循环内部,它检查是否存在修订,如果存在,则使用
    wp\u update\u post
    将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提供。我知道,你可以通过检查每篇文章来恢复内容。然而,由于我需要一次恢复多个修订,我想问是否有一种方法可以批量恢复,而不是逐个发布完美的答案!谢谢