智能删除WordPress修订版

智能删除WordPress修订版,wordpress,revisions,Wordpress,Revisions,我想清理我的WordPress数据库并删除一些后期修订 但我只找到了删除所有修订版的插件或代码。但这不是我想要的。我想保留有重大变化的修订。这意味着只应删除短时间内保存的修订。如果上次修订日期不在某个时间段内,则不应将其删除 我一年前写了一篇文章,做了3次修改。半年后,我编辑了一些东西,并再次创建了4个修订版。我正在寻找的智能清理应该在创建帖子时清理2个旧版本,在编辑帖子时清理3个旧版本。应该只保留最后的更改 逻辑可能是:如果版本不超过一周,则只在当前版本之前删除该版本 是否有插件或代码可以对修

我想清理我的WordPress数据库并删除一些后期修订

但我只找到了删除所有修订版的插件或代码。但这不是我想要的。我想保留有重大变化的修订。这意味着只应删除短时间内保存的修订。如果上次修订日期不在某个时间段内,则不应将其删除

我一年前写了一篇文章,做了3次修改。半年后,我编辑了一些东西,并再次创建了4个修订版。我正在寻找的智能清理应该在创建帖子时清理2个旧版本,在编辑帖子时清理3个旧版本。应该只保留最后的更改

逻辑可能是:如果版本不超过一周,则只在当前版本之前删除该版本


是否有插件或代码可以对修订版进行智能清理?

我在这里看到三个选项:

1。别担心

数据库的设计目的是非常高效地处理大量信息。通过分析主题/插件或卸载不必要的插件,您一定会大大节省性能

2。允许的修订数量限制

有一个很棒的名为“”的过滤器,您可以将其添加到其中,以限制每篇文章的修订。这不是一个理想的解决方案,但它是一个快速的解决方案

add_filter('wp_revisions_to_keep', function() { return 10; });
或者,您也可以在wp-config.php中使用此选项,以获得相同的效果:

define( 'WP_POST_REVISIONS', 3 );
3。随时清除修订内容

在创建新版本之前,会进行检查以确保新版本与旧版本不同。这使用“wp\U保存\U发布\U修订\U发布\U已更改”过滤器(此过滤器没有可用的正式文档)

我们可以点击这个钩子来更新现有的钩子

add_filter( 'wp_save_post_revision_post_has_changed', 'minimize_revisions' );

function minimize_revisions( $hasChanged, $lastRevision, $newRevision ) {
    if( !$hasChanged ) return false;

    $revisionTimeThreshold = 60 * 60 * 24; // One day
    $now = get_the_time('U');

    if( $now - strtotime($lastRevision->post_date) < $revisionTimeThreshold ) {

        // Update revision, rather than create a new one
        $newRevision->ID = $lastRevision->ID;
        wp_update_post($newRevision);
        return false;
    }

    return true;
}
add_filter('wp_save_post_revision_post_has_changed'、'minimize_revisions');
函数最小化修订($hasChanged、$lastRevision、$newRevision){
如果(!$hasChanged)返回false;
$revisionTimeThreshold=60*60*24;//一天
$now=获取时间('U');
if($now-STROTIME($lastRevision->post_date)<$REVISIONTIMESTHORD){
//更新修订,而不是创建新修订
$newRevision->ID=$lastRevision->ID;
wp_更新_职位($newRevision);
返回false;
}
返回true;
}

现在是2019年,我也有同样的愿望。我有一个包含大量修订的页面(比如说100),每次我试图保存页面时,都会出现大约500个错误;我达到了某种服务器限制。在手动一个接一个地删除20个最旧的修订,并花费几分钟时间完成后,我可以无误地保存。这个工作流程我已经做了10次,而且在一段时间内都会这样。相反,我希望能够通过单击“删除早于X的修订”。