Debug WordPress untuk Fungsi yang Deprecated

Sehari kemaren saya berusaha mengupdate WordPress saya dari versi 3.4 ke versi 3.5. Sayangnya sejak WordPress versi 3.3 yang lalu, saya tidak bisa mengupdate secara otomatis. Saya hanya memperoleh error dengan kode 500 (Internal Error) ketika saya membuka tautan untuk update otomatis. Terpaksa pada beberapa versi kemaren termasuk update ke versi 3.5, saya melakukan update manual (download lalu timpa pada file WordPress yang lama).

Karena penasaran link update masih belum jalan juga, saya berniat melakukan analisis untuk mencari tau penyebab erornya WordPress saya. Untuk memulai proses analisis (debug), kita perlu mengaktifkan WordPress agar mengeluarkan eror yang dihasilkan oleh php. Tambahkan baris berikut pada wp-config.php.

1
2
3
4
5
6
/** File: wp-config.php **/
/** Debug **/
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', true);
@ini_set('display_errors',1);

Ternyata dari hasil debug, banyak eror yang dihasilkan oleh plugin dan themes yang saya pakai. Kebetulan themes dan plugin tersebut banyak yang tidak ada update terbarunya. Seiring dengan perkembangan WordPress, banyak fungsi-fungsi yang deprecated atau sudah tidak dipakai lagi dan digantikan oleh fungsi lain. Satu-satunya cara untuk memperbaiki plugin dan themes tersebut adalah dengan mengganti fungsi-fungsi tersebut dengan fungsi yang lebih baru.

Namun sayangnya, konsep WordPress dalam menjebak eror (error catch) sangat tidak memudahkan user dalam mencari tau letak error yang sebenarnya. Ketika Wordpres menampilkan eror, maka baris eror yang ditunjukkan adalah baris untuk menampilkan eror tersebut, bukan baris error yang sesungguhnya.

Screenshot from 2012-12-12 15:11:11 1

Akhirnya saya menemukan sebuah cara untuk mengakali WordPress menampikan baris eror yang sebenarnya.

Langkah pertama yang kita lakukan adalah mengingat atau menuliskan fungsi yang deprecated yang ditunjukkan pada layar browser. Contoh pada gambar di atas adalah fungsi get_current_theme() yang sudah tidak dipakai lagi dan harus digantikan dengan fungsi wp_get_theme().

Lalu buka file wp-includes/deprecated.php dan cari baris dengan nama fungsi tersebut. Lalu rename fungsi tersebut, cukup dengan menambahkan beberapa string di depan atau di belakang nama fungsi tersebut. Pada contoh di bawah ini, saya merename fungsi get_current_theme menjadi test_get_current_theme. Setelah itu simpan perubahan yang sudah dilakukan.

Screenshot from 2012-12-12 15:12:40

Selanjutnya kita harus mereload halaman yang tadi menunjukkan eror tersebut. Kali ini, WordPress tidak lagi menampilkan pesan eror bahwa fungsi pada wordpress sudah deprecated, namun WordPress akan menujukkan eror yang sebenarnya, yaitu baris yang memakai fungsi deprecated tersebut.

Screenshot from 2012-12-12 15:16:59 1

Langkah selanjutnya adalah membuka file yang ditunjukkan pada error tersebut dan mengganti fungsi lama dengan fungsi yang baru. Dalam kasus di atas, fungsi get_current_theme diganti dengan fungsi wp_get_theme pada file themes/core/tools/theme-options.php baris ke 9.

Screenshot from 2012-12-12 15:18:56

Setelah selesai memperbaiki banyak plugin dan themes yang eror, akhirnya saya bisa membuka halaman update WordPress tanpa ada masalah sedikitpun. Jangan lupa untuk menonaktifkan debug pada file wp-config.php dengan mengganti nilai true menjadi false.

Leave a Reply

Your email address will not be published. Required fields are marked *