WordPress memberikan fasilitas yang disebut Post Revision, yang menyimpan setiap perubahan secara kronologis pada artikel anda. Dengan fitur ini, anda bisa me-restore sebuah artikel yang telah dimodifikasi. Fungsinya mengingatkan saya pada Restore Point di Windows :army:

Di sisi lain, fitur ini sebenarnya akan membuat database kita membengkak sebesar gajah (dooh!). Pada saat menulis atau memodifikasi artikel, WordPress menjalankan fitur auto save-nya, menyimpannya sebagai Post Revision. Data-data tersebut dimasukkan ke table wp-post. Sekarang, coba bayangkan :matabelo: jika 1 artikel memiliki 1 revisi. Maka table wp_posts anda akan membengkak (ada kata yang lain gak sih?) menjadi 2 kali lipat. Bagaimana kalau ada 3, 4, 5 atau 10 revisi? Apalagi kalau database anda sudah cukup uzur, dengan jumlah artikel mencapai ratusan bahkan ribuan post. :matabelo:

Nah, artikel ini akan menjelaskan bagaimana cara menghapus post revision, yang manfaatnya selain mengecilkan database juga mengoptimalkan WordPress.

Menghapus Post Revision Menggunakan MySQL Query

Sebelum menjalankan tips ini, pastikan anda telah mem-backup database anda. Baca artikel tentang Cara Mudah Backup dan Restore Database MySQL di sini. Setelah itu login ke PHPMyAdmin untuk mengeksekusi query berikut ini:

DELETE FROM wp_posts WHERE post_type='revision';

Perintah di atas akan menghapus semua post dari table wp_posts yang mempunyai value type=revision. Kemudian jalankan lagi query untuk mengoptimalkan table wp_posts yang telah kita obok-obok barusan:

OPTIMIZE TABLE wp_posts;

Menghapus Post Meta dari Post Revision yang Telah Dibersihkan

DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision';

Jangan lupa untuk mengoptimalkan table wp_postmeta:

OPTIMIZE TABLE wp_postsmeta;

Membatasi Jumlah Maksimum Revisi atau Menonaktifkan Revisi

Sesuai dengan kepercayaan kebutuhan masing-masing, anda bisa membatasi jumlah revisi atau bahkan menonaktifkannya sama sekali. Menggunakan plugins seperti WP – Post Control, anda dapat melakukan tweak ini dengan mudah. Tapi saya lebih memilih untuk menghindari penggunaan plugins yang berlebihan (takut overdosis). Jadi saya akan langsung mengedit konfigurasi di file wp-config.php. Ada 3 value yang bisa digunakan:

  1. true (default), -1: ini adalah value default yang artinya WordPress akan selalu menyimpan revisi.
  2. false, 0: WordPress tidak akan menyimpan revisi sama sekali (kecuali 1 auto save)
  3. (int) > 0: WordPress akan menyimpan revisi sebanyak angka yang kita set. Revisi yang lebih lama akan dihapus secara otomatis.

Nah, sekarang coba edit file wp-config.php, dan cari baris berikut ini:

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

Untuk menonaktifkan Post Revision, tambahkan code ini:

/** Nonaktifkan Post Revision */
define('WP_POST_REVISIONS', false);

Untuk mengatur maksimum revisi sebanyak 3 post, gunakan code ini:

/** Set Maximum Post Revision = 3 posts */
define('WP_POST_REVISIONS', 3);

Menonaktifkan Fitur Auto Save di WordPress

Ini tips buat yang benar-benar pengen bersih sebersih-bersihnya. Kalau saya, masih membutuhkan fitur ini karena koneksi internet yang tidak stabil. Belum lagi PLN yang suka semena-mena. :(

Ok, ada 4 file yang harus diedit: post.phppage.phppage-new.php dan post-new.php. Semuanya ada di folder wp-admin. Untuk setiap file, cari code ini:

wp_enqueue_script('autosave');

Lalu tambahkan comment mark di depan code tersebut, sehingga tidak akan dieksekusi oleh server. Code-nya akan menjadi seperti ini:

//wp_enqueue_script('autosave');

Hapus Data Pingback dari Database WordPress

DELETE FROM wp_comments WHERE comment_type = 'pingback';

Hapus Spam Comment dari Database WordPress

DELETE from wp_comments WHERE comment_approved = 'spam';

  • 0 = Comment Awaiting Moderation
  • 1 = Approved Comment
  • spam = Comment marked as Spam

Hapus Tags yang Tidak Digunakan dari Database WordPress

SELECT * From wp_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;

Terakhir, optimalkan table wp_commentswp_commentmeta dan wp_terms:

OPTIMIZE TABLE wp_comments;
OPTIMIZE TABLE wp_commentmeta;
OPTIMIZE TABLE wp_terms;

Selesai! Sekarang coba liat efek bersih-bersih ini. Berapa space yang bisa dihemat? Coba lakukan query MySQL melalui blog anda. Misalnya gunakan kolom pencarian, dan rasakan bedanya.