Disable WordPress Drafts & Revisions
Today’s computer tech tip involves disabling two features in WordPress: Automatic Drafts & Revisions. They’re intended to be helpful, but they’re not for everyone. I would prefer to see these as options to enable/disable within the Admin Dashboard, but hard-coding the changes will suffice for now. I may have mentioned it before, but I prefer coding my articles in HTML with Notepad++ and later copy/pasting them in, so drafts and revisions aren’t necessary to me.
Disable Automatic Drafts
While writing a post in WordPress, the system will automatically assign that post an ID number, adjust the basic permalink with this ID, and save the post as a draft. It sounds like a helpful tool, right? You won’t lose a post in the event your browser crashes or you encounter another problem. As I said though, this feature isn’t for everyone.
For a few moments, this automatic action freezes the post screen. I found that it’s more likely to happen once I give the post a title. Sometimes, if I’m quick enough, I can type the title and quickly hit “Publish” before a draft is saved, saving me from waiting for the “Publish” button to become available again.
If I actually intend to save a Draft and come back to it later, the published version sometimes gets a different post ID. Then, I have a draft version and a published version of the same post. You’ll also notice I use the pretty permalink structure
/%post_id%/%postname%/ and sometimes the post IDs jump a bit. I’d prefer if they go in chronological order and don’t skip. I could continually adjust the MySQL database via phpMyAdmin, but there’s a better way.
In order to disable automatic drafts, you just have to comment out one line. Open up /wp-admin/post-new.php and locate
wp_enqueue_script('autosave'); on line 36. Simply add two slashes before that line to make it a PHP comment line and you’re done.
After making this adjustment, your posts won’t automatically be saved as drafts. You will still be able to manually save a post as such, so don’t worry about that. If you have duplicate drafts already, it’s easiest just to delete them from the Admin Dashboard rather than adjust the database yourself.
Post revisions is an annoying feature to me. Every little change I make to a post – even if I immediately “Update” the post afterward – is first saved as a revision. Sometimes, I go to the edit screen just to take a look and a revision is saved without any change being made. (This brings me to a minor addition I’d like to see: a “Cancel” button in the post edit screen.)
Another weird occurrence of revisions is when I go to edit a post, completely ignoring the revisions (as I always do), “Update” the post, and then get notified there is a more recent revision. Sorry WordPress, but the adjustment I just made is the most recent in both time that I made it and personal satisfaction of the post content.
I easily rack up 10+ revisions for each post. The more entries to the database, the larger it is. In turn, the longer it takes the server to generate a backup, the longer it takes to download, and the more space it takes up on my hard drive. So, if you’re organized enough to keep a folder of HTML or Word documents for your posts, you likely won’t benefit from post revisions at all.
Fortunately, disabling post revisions is also very simple. Open up the wp-config.php file, which is located in your website’s root public directory. At the very bottom, add the following lines:
// disable post-revision nonsense
define('WP_POST_REVISIONS', FALSE); // false or # of revisions to keep
As the comment says, you can adjust the False boolean to a number, so each post will keep only the most recent X number of revisions.
Purge Old Revisions
If you decided to disable revisions completely, you likely want to delete all existing revisions as well, which means getting your hands dirty in the database. Login to your web host’s control panel, locate the database manipulation tool (phpMyAdmin is the popular choice), and open up the database for your WordPress installation. Over on the SQL tab, enter in the following query:
SELECT * FROM wp_posts WHERE post_type = 'revision'
The code reads: Select all rows from the wp_posts table where the post_type is a revision. In order to quickly delete all these rows of revisions, enter in the following query:
DELETE FROM wp_posts WHERE post_type = 'revision'
What features about WordPress annoy you? What modifications have you made to the wp-config.php file or other core files?
Posted in: Web Development