get_var( "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type = 'revision'" ); // Get average revisions per post. $posts_with_revisions = $wpdb->get_var( "SELECT COUNT(DISTINCT post_parent) FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_parent > 0" ); $avg_revisions = $posts_with_revisions > 0 ? round( $revision_count / $posts_with_revisions ) : 0; // Check if revisions are limited. $revisions_limit = defined( 'WP_POST_REVISIONS' ) ? WP_POST_REVISIONS : true; $details = array( 'total_revisions' => $revision_count, 'avg_per_post' => $avg_revisions, 'revision_limit' => $revisions_limit, 'is_limited' => ( true !== $revisions_limit && false !== $revisions_limit ), ); // Format the limit for display. if ( true === $revisions_limit ) { $limit_text = \__( 'unlimited', '0-day-analytics' ); } elseif ( false === $revisions_limit ) { $limit_text = \__( 'disabled', '0-day-analytics' ); } else { $limit_text = (string) $revisions_limit; } $details['limit_text'] = $limit_text; if ( false === $revisions_limit ) { return static::pass( \__( 'Post revisions are disabled. While this saves database space, you won\'t be able to revert to previous versions of your content.', '0-day-analytics' ), $details ); } if ( $revision_count > 5000 ) { return static::fail( 'medium', sprintf( /* translators: %s: number of revisions */ \__( 'Your site has stored %s old versions of posts and pages. This is bloating your database, slowing down backups, and can impact editor performance.', '0-day-analytics' ), static::format_number( $revision_count ) ), \__( 'Add this line to wp-config.php to limit revisions: define(\'WP_POST_REVISIONS\', 5); Then use a database cleanup plugin to delete existing old revisions.', '0-day-analytics' ), $details ); } if ( $revision_count > 1000 && true === $revisions_limit ) { return static::warning( sprintf( /* translators: %s: number of revisions */ \__( 'Your site has %s post revisions and no limit is set. Consider limiting revisions to keep your database lean.', '0-day-analytics' ), static::format_number( $revision_count ) ), \__( 'Add define(\'WP_POST_REVISIONS\', 5); to wp-config.php to keep only the 5 most recent revisions per post.', '0-day-analytics' ), $details ); } if ( true === $revisions_limit ) { return static::info( sprintf( /* translators: %s: number of revisions */ \__( 'You have %s post revisions with no limit configured. This is fine for now, but consider setting a limit as your site grows.', '0-day-analytics' ), static::format_number( $revision_count ) ), $details ); } return static::pass( sprintf( /* translators: 1: number of revisions, 2: limit */ \__( 'Post revisions are limited to %2$s per post. You currently have %1$s revisions stored, which is manageable.', '0-day-analytics' ), static::format_number( $revision_count ), $limit_text ), $details ); } } }