Kali ini saya mau update masalah pada plugin wordpress yang terjadi disalah satu website saya, ketika saya mengaktifkan salah satu plugin yang menggunakan simple_html_dom.php, website saya menjadi error, tampilan errornya kurang lebih seperti ini:
Cannot redeclare file_get_html() (previously declared in /home/hoe/public_html//wp-content/plugins/xxxxxpluginA/lib/simple_html_dom.php:36) in /home/hoe/public_html//wp-content/plugins/xxxxxpluginB/admin/classes/simple_html_dom.php on line 80
Kalau dilihat dari errornya, ada konflik yang terjadi ketika saya mengaktifkan plugin A, setelah saya trial error dan mencoba menon-aktifkan plugin xxxxxpluginB seperti yang disebut di error di atas. Ternyata ketika plugin xxxxxpluginA saya aktifkan kembali, tidak muncul error tersebut, kesimpulannya berarti jelas bahwa ada konflik dengan 2 plugin tersebut.
Setelah browsing sana sini ternyata konflik tersebut disebabkan adanya pemanggilan file simple_html_dom.php yang dobel, plugin A sudah lebih dahulu menggunakan file tersebut.
Saya ga ngerti fungsi file tersebut untuk apa hehe yang jelas banyak di pake di plugin-plugin sekarang. Alternatifnya perlu sedikit modifikasi cara pemanggilan file simple_html_dom.php pada plugin xxxxxpluginB (plugin kedua).
Bingung juga nyari file yang mengandung komeng pemanggilan file simple_html_dom.php di plugin B, banyak banget file soalnya, masa harus buka satu per satu. Akhirnya nemu software FileSeek yang berfungsi untuk searching komeng.
Langkah pertama, saya download plugin B ke komputer saya terlebih dahulu.
Pastinya untuk memanggil file simple_html_dom.php mengandung ‘admin/classes/simple_html_dom.php‘ jadi saya searching dengan query ‘admin/classes/simple_html_dom.php‘ tanpa tanda kutip menggunakan FileSeek.
Ketemu, file simple_html_dom.php di panggil di file wso-members.php seperti gambar di atas 😀 yesss bahkan kita bisa lihat penulisannya.
Selanjutnya tinggal saya buka file wso-members.php dan search ‘admin/classes/simple_html_dom.php‘ tanpa tanda kutip, dan ketemu baris command di bawah ini:
include_once (‘admin/classes/simple_html_dom.php’); —-> ini sumber masalahnya
Jadi, karena file tersebut dipanggil kembali dengan perintah di atas, terjadi konflik karena perintah di atas sudah (memanggil file simple_html_dom.php) juga dilakukan di plugin B.
Langsung saja baris perintah diatas di hapus dan ganti dengan baris perintah berikut:
if ( ! class_exists( ‘simple_html_dom_node’ ) ) {
require_once(‘admin/classes/simple_html_dom.php’);
}
Save….
Coba kembali aktifkan plugin, dan sudah tidak bentrok lagi….