Pendahuluan
Bagi pengelola situs WordPress yang menerapkan praktik deployment modern menggunakan Git, sering muncul notifikasi berikut di halaman
Updates dashboard WordPress:
"Situs ini tampaknya di bawah kendali versi. Pembaruan otomatis dinonaktifkan."
Notifikasi ini bukan error, melainkan perilaku yang
disengaja oleh WordPress core. Artikel ini membahas kenapa hal ini terjadi dan bagaimana cara mengaktifkan kembali auto-update tanpa perlu melepas Git dari workflow deployment.
Kenapa WordPress Menonaktifkan Auto-Update?
WordPress secara otomatis memeriksa keberadaan folder tersembunyi berikut di root direktori situs (atau di direktori manapun di atasnya):
-
.git -
.svn -
.hg -
.bzr
Kalau salah satu folder ini terdeteksi, WordPress menyimpulkan bahwa situs dikelola lewat
version control system (VCS), dan langsung menonaktifkan fitur auto-update di background. Tujuannya untuk mencegah konflik: kalau WordPress mengubah file secara otomatis sementara developer juga mengelola perubahan lewat Git, bisa terjadi ketidaksesuaian antara isi repository dengan kondisi file aktual di server.
Pemeriksaan ini dilakukan oleh method
WP_Automatic_Updater::is_vcs_checkout() di dalam file inti
wp-admin/includes/class-wp-automatic-updater.php, dan sudah ada sejak WordPress versi 3.7.
Kenapa
WP_AUTO_UPDATE_CORE di
wp-config.php Tidak Membantu
Banyak developer mencoba menambahkan baris berikut di
wp-config.php untuk memaksa auto-update tetap aktif:
define( 'WP_AUTO_UPDATE_CORE', true ); Namun cara ini
tidak berhasil. Constant tersebut hanya mengatur
jenis update (major atau minor) yang diizinkan β bukan mengatasi pemeriksaan VCS. Pemeriksaan folder
.git/
.svn/dll berjalan lebih dulu dan langsung memblokir keseluruhan proses auto-update sebelum constant tadi sempat diperiksa.
Solusi: Filter
automatic_updates_is_vcs_checkout
WordPress core sendiri menyediakan filter khusus untuk mengabaikan hasil deteksi VCS ini:
add_filter( 'automatic_updates_is_vcs_checkout', '__return_false', 1 ); Filter ini memberi tahu WordPress untuk menganggap seolah tidak ada VCS yang terdeteksi, sehingga proses auto-update bisa berjalan normal seperti pada situs tanpa Git.
Cara Implementasi (via mu-plugin)
Cara paling aman menempatkan kode filter ini adalah lewat folder
mu-plugins (
must-use plugins), karena file di folder ini otomatis aktif tanpa perlu diaktifkan manual, dan tidak akan hilang saat ganti tema.
-
Buat folder
mu-pluginskalau belum ada:mkdir -p /path/ke/wordpress/wp-content/mu-plugins
-
Buat file baru di dalamnya:
nano /path/ke/wordpress/wp-content/mu-plugins/enable-auto-update.php
-
Isi dengan kode berikut:
<?php /** * Plugin Name: Force Enable Auto Updates (Ignore VCS Detection) */ add_filter( 'automatic_updates_is_vcs_checkout', '__return_false', 1 );
- Simpan file. Tidak ada langkah aktivasi tambahan β WordPress otomatis memuat semua file di
mu-pluginspada setiap request.
Pertimbangan Penting untuk Workflow Git
Setelah filter ini aktif, WordPress akan kembali memperbarui core, plugin, tema, atau file terjemahan secara otomatis di server β tapi perubahan file tersebut
tidak otomatis tercatat di repository Git. Ini bisa membuat kondisi repository Git tertinggal dari kondisi aktual file di server, sehingga menimbulkan risiko:
- Riwayat perubahan tidak lengkap di Git
- Konflik saat suatu waktu melakukan
git pullatau deploy ulang dari repository - Kesulitan melacak kapan dan versi apa yang benar-benar berjalan di server
Rekomendasi Mitigasi
-
Cron job sinkronisasi otomatis β jadwalkan commit otomatis setelah auto-update WordPress biasanya berjalan:
cd /path/ke/wordpress && git add -A && git commit -m "auto-update sync $(date +\%Y-\%m-\%d)"
- Sinkronisasi manual berkala β jika tidak ingin commit otomatis, lakukan
git statusdan commit manual secara rutin (misalnya mingguan) untuk menangkap perubahan dari auto-update.
- Pertimbangkan alternatif β untuk situs produksi dengan SLA ketat, sebagian tim justru memilih menonaktifkan auto-update sepenuhnya dan mengelola update WordPress core/plugin secara eksplisit lewat pipeline Git (commit β test β deploy), sehingga tidak ada perubahan file yang terjadi di luar kendali repository.
Kesimpulan
Notifikasi "situs di bawah kendali versi" adalah perilaku bawaan WordPress yang bisa diatasi dengan menambahkan filter
automatic_updates_is_vcs_checkout melalui mu-plugin. Namun, mengaktifkan kembali auto-update pada situs berbasis Git membawa trade-off: kenyamanan pembaruan otomatis harus diimbangi dengan disiplin menjaga sinkronisasi antara kondisi file di server dan riwayat commit di repository, agar workflow version control tetap konsisten dan bermanfaat.