Berhenti pusing dengan konflik plugin WordPress Multisite: Beri tiap klien stack plugin mereka sendiri
WordPress Multisite sering ditawarkan sebagai cara untuk menjalankan banyak situs klien dari satu instalasi. Namun untuk urusan plugin, fitur ini diam-diam melakukan kebalikan dari apa yang diharapkan oleh agency. Multisite membagikan SATU direktori wp-content dan SATU database ke setiap subsite. File plugin berada di satu tempat untuk seluruh network. Layer tunggal yang dibagikan inilah yang menjadi awal mula konflik, dan mengaktifkannya per situs tetap tidak akan menyelesaikan masalah.
Kenapa manajemen plugin Multisite menyebabkan konflik
Di Multisite, plugin diinstal secara network-wide. Setelah itu Anda punya dua pilihan: mengaktifkan plugin secara network-wide agar berjalan di mana-mana, atau membiarkannya nonaktif dan membiarkan situs individual mengaktifkannya. Apa pun pilihannya, FILE plugin tetap dibagikan. Semua kode plugin berada di codebase yang sama untuk setiap subsite.
Perbedaan itu jauh lebih penting dari kelihatannya. “Diaktifkan per situs” bukan berarti “terisolasi.” Artinya kode fisik yang sama hadir untuk semua tenant dan hanya dinyalakan untuk beberapa di antaranya. Anda tidak bisa memberi dua subsite dua set plugin yang benar-benar berbeda dan terisolasi. Jika Klien A butuh versi 4 dari sebuah plugin dan Klien B butuh versi 6, Multisite tidak punya tempat untuk meletakkan keduanya. Satu versi harus dipilih, dan itu berlaku untuk semuanya.
Skenario nyata di mana ini jadi masalah
Layer yang dibagikan ini mengubah masalah lokal yang kecil menjadi masalah network-wide:
- Plugin yang tidak kompatibel. Klien A ingin plugin booking yang menggunakan hook filter yang sama dengan plugin membership milik Klien B. Pada instalasi terpisah, ini tidak jadi masalah. Di Multisite, kedua plugin memuat dalam ruang proses yang sama, dan fatal error yang dihasilkan salah satunya akan berdampak ke seluruh network.
- Pinning versi. Seorang klien yang menjalankan stack versi lama yang stabil menolak untuk update plugin karena akan merusak alur kustom mereka. Klien lain butuh rilis terbaru untuk perbaikan keamanan. Pada codebase yang dibagikan, Anda tidak bisa memenuhi kedua permintaan tersebut.
- Attack surface keamanan. Setiap file plugin yang ada di network adalah kode yang bisa dieksploitasi, bahkan pada situs yang tidak pernah mengaktifkannya. Plugin rentan yang diam tak aktif di wp-content yang dibagikan tetap terbawa ke setiap subsite. Attack surface-nya adalah gabungan dari semua plugin yang ada, bukan milik masing-masing klien.
Masing-masing masalah ini berasal dari akar penyebab yang sama: satu layer plugin dan theme yang dibagikan.
Seperti apa isolasi per klien yang sebenarnya
Isolasi nyata berarti plugin klien hanya memuat kode untuk klien tersebut. Jika Klien A menginstal, melakukan update, atau merusak sebuah plugin, tidak ada yang berubah bagi Klien B. Secara konkret, hal itu membutuhkan:
- Direktori plugin terpisah per klien, bukan direktori bersama dengan tombol per situs.
- Direktori theme terpisah per klien, sehingga konflik theme dan perbedaan versi tetap terisolasi.
- Versi yang independen, sehingga mem-pin versi stack satu klien tidak pernah menghalangi update klien lain.
- Blast radius sebesar satu situs, sehingga fatal error pada plugin hanya merusak satu tenant alih-alih seluruh network.
Pengaturan aktif per situs pada Multisite tidak bisa memberikan semua ini, karena file-filenya tidak pernah berhenti dibagikan.
Bagaimana wp-content per tenant menghadirkan stack terpisah

Celah inilah yang ingin ditutup oleh GrabWP Tenancy Pro. Daripada satu wp-content yang dibagikan, Pro memberi setiap tenant pemisahan wp-content yang LENGKAP: direktori theme dan plugin yang terisolasi di bawah direktori kontennya sendiri. Setiap klien pada akhirnya memiliki stack plugin dan theme yang benar-benar terpisah, bukan codebase bersama yang dihidupkan dan dimatikan.
Karena file-filenya terpisah secara fisik, skenario konflik di atas tidak akan terjadi lagi. Klien A bisa menjalankan plugin versi 4 sedangkan Klien B menjalankan versi 6. Plugin yang tidak kompatibel hanya dimuat untuk tenant yang menginstalnya. Plugin rentan yang berada di direktori satu tenant bukan bagian dari attack surface tenant lain. Pro juga memadukan ini dengan database MySQL atau SQLite khusus per tenant serta fitur backup dan restore per tenant, sehingga isolasi data sejalan dengan isolasi kode.
Plugin gratis GrabWP Tenancy sudah memisahkan upload, prefix tabel, dan routing domain atau path, serta memberi Anda satu dashboard untuk membuat dan mengelola tenant. Fitur wp-content per tenant sepenuhnya, yang berarti plugin dan theme terisolasi, adalah fitur Pro. Versi dasar yang gratis memisahkan upload dan prefix, bukan file plugin dan theme, jadi gunakan versi Pro khusus jika sumber konflik Anda berada pada layer plugin.
Mengelola banyak stack terisolasi dari satu dashboard
Kekhawatiran yang paling umum dengan sistem isolasi adalah Anda menukar satu masalah dengan masalah lain, alih-alih melawan konflik, kini Anda harus mengurus puluhan folder plugin yang terpisah. GrabWP didesain agar hal itu tidak terjadi.
Bahkan dengan stack yang sepenuhnya terisolasi, Anda tetap mengelola setiap tenant dari SATU instalasi WordPress dan satu dashboard. Halaman manajemen Extensions di versi Pro menampilkan status live plugin dan theme per tenant, sehingga Anda bisa melihat persis apa yang dijalankan setiap klien tanpa harus login ke tiap situs. Directive queue dari situs utama bisa mengaktifkan atau menonaktifkan plugin, mengganti theme, dan update opsi pada tenant mana pun. Isolasi tidak menghilangkan kontrol terpusat: Anda mendapat stack yang terpisah dan satu tempat untuk mengatur semuanya. Kontrol Performance and Security per tenant melengkapi alur kerja satu pintu ini.
Memigrasikan klien yang rawan konflik ke stack-nya sendiri
Berikut adalah alur kerja konkret untuk satu klien yang pluginnya terus-menerus merusak network Anda:
- Instal plugin gratis GrabWP Tenancy di instalasi WordPress Anda dan pastikan isolasi upload dan prefix berjalan normal.
- Upgrade ke Tenancy Pro untuk membuka fitur wp-content per tenant yang lengkap, lalu buat tenant untuk klien bermasalah tersebut.
- Lakukan backup per tenant terlebih dahulu menggunakan fitur backup siap restore dari Pro, agar Anda punya titik rollback yang aman.
- Pindahkan plugin dan theme klien ke direktori plugin dan theme terisolasi milik tenant tersebut, dengan versi persis yang mereka butuhkan.
- Pin versi mereka secara independen, tanpa khawatir dengan apa yang dijalankan tenant lain.
- Verifikasi dari halaman Extensions bahwa status live plugin dan theme tenant tersebut sesuai dengan yang Anda inginkan.
- Gunakan directive queue dari situs utama untuk mengaktifkan plugin yang tepat dan mengganti theme, lalu pastikan tenant Anda yang lain tidak terpengaruh.
Klien yang dulu mengancam seluruh network kini berada di kotak tertutup yang masih bisa Anda kontrol secara terpusat.
Tradeoff dan kapan hal ini jadi penting
Stack per tenant memakan lebih banyak ruang disk dibanding satu wp-content yang dibagikan, karena setiap tenant membawa file plugin dan theme mereka sendiri. Untuk segelintir situs yang nyaris identik dan semuanya menjalankan plugin yang sama, Multisite biasa mungkin sudah cukup. Jika hal itu mendeskripsikan kondisi Anda, baca kapan tidak sebaiknya menggunakan WordPress Multisite sebelum menambahkan layer isolasi apa pun.
Saat klien Anda butuh plugin berbeda, versi berbeda, atau attack surface bersama yang lebih kecil, layer yang dibagikan akan jadi bottleneck, dan isolasi akan sepadan dengan hasilnya. Untuk pandangan lebih luas tentang cara memisahkan situs klien, lihat cara mengisolasi situs klien WordPress tanpa Multisite.
Mulai dengan plugin gratis GrabWP Tenancy untuk mengisolasi upload, prefix, dan routing dari satu dashboard. Ketika layer plugin dan theme adalah tempat munculnya konflik Anda, silakan upgrade ke GrabWP Tenancy Pro seharga $9.99/month untuk wp-content per tenant yang utuh, sehingga setiap klien mendapat stack plugin dan theme yang benar-benar terpisah yang tetap bisa Anda kelola secara terpusat.
Pertanyaan yang sering diajukan
- Bisakah Anda memberi dua subsite WordPress Multisite plugin yang benar-benar berbeda?
- Sebenarnya tidak. Multisite menginstal file plugin ke dalam satu direktori wp-content yang dibagikan. Anda bisa mengaktifkan plugin secara network-wide di mana-mana atau mengaktifkannya per situs, tapi kode plugin tetap digunakan bersama di setiap subsite. Anda tidak bisa memberi dua subsite dua set plugin yang benar-benar terisolasi dan punya versi independen.
- Bagaimana wp-content per tenant mencegah konflik plugin?
- Dengan GrabWP Tenancy Pro, setiap tenant mendapat direktori theme dan plugin yang terisolasi di bawah direktori kontennya sendiri. Plugin milik satu klien hanya memuat kode untuk klien tersebut, jadi plugin yang tidak kompatibel atau error tidak akan merusak tenant lain. Setiap stack benar-benar terpisah, bukan sekadar diaktifkan dan dimatikan dari codebase yang sama.
- Apakah stack plugin yang terisolasi berarti Anda kehilangan manajemen terpusat?
- Tidak. Anda tetap mengelola setiap tenant dari satu instalasi WordPress dan satu dashboard. GrabWP Tenancy Pro menambahkan directive queue yang memungkinkan situs utama untuk mengaktifkan atau menonaktifkan plugin, mengganti theme, dan memperbarui opsi pada tenant mana pun, sehingga isolasi tidak membuat Anda kehilangan kontrol terpusat.
Editorial standards: Our content is written by WordPress experts with hands-on multi-tenancy experience. Articles are fact-checked and regularly updated to ensure accuracy.