Belirli AJAX istekleri için WordPress eklentilerinin yüklenmesini hariç tutma
TL; DR – WordPress tarafından bir AJAX isteği her sunulduğunda, tüm WordPress çekirdeği, aktif tema ve tüm aktif eklentiler yüklenir. Bir Must Use eklentisi kullanarak belirli eklentilerin belirli istekler için yüklenmesini engelleyerek bu ek yükü azaltabiliriz.
WordPress'in öne çıkan özelliklerinden biri, hemen hemen her şeyi yapacak şekilde genişletilebilmesidir. WordPress'in sağladığı esneklik harikadır ancak aynı zamanda bir takım uyumluluk sorunlarına da yol açabilir. Ücretsiz veya ücretli bir tema veya eklenti yayınladıysanız, eminim bunu deneyimlemişsinizdir. Veya çok sayıda tema ve eklenti kullanmış olsanız bile, muhtemelen uyumluluk sorunlarınız olmuştur.
Bunu WP Migrate DB Pro ile ilk elden deneyimledik. Taşıma işlemleriyle çakışan temalar ve eklentiler, destek taleplerimizin çoğunu oluşturur. Bazı eklentiler o kadar sık ortaya çıkıyor ki, WP Migrate DB Pro ile çakıştığı bilinen eklentilerin bir listesini yayınlamaya başladık.
Geçmişte bu eklenti çakışmalarını duruma göre teşhis etmeye çalıştık, ancak çoğu zaman sorunu çözmenin mümkün olmadığını gördük. Bu nedenle, bir geçiş çalıştırmadan önce müşterilerimizden eklentiyi devre dışı bırakmalarını istemek zorunda kaldık. Bizim açımızdan ideal ve kabul edilemez bir müşteri deneyiminden uzak.
Bu yüzden soruna biraz daha agresif bir şekilde saldırmaya karar verdik. Bu eklentileri nasıl kaldırabiliriz?
Sürüm 1.4, WP Migrate DB Pro tarafından yapılan istekler için hangi WordPress eklentilerinin yükleneceğini kontrol etmenizi sağlayan yeni bir ayar sunar. Bir taşıma isteğinde eklentilerin yüklenmesini engelleme yeteneğidir.
Örnek vermek
Diyelim ki bu eklentileri yüklediniz:
- Kolay Dijital İndirmeler
- Çevre Galerisi
- Kötü davranış
- AramaWP
- WordPress SEO'su
- WP Geçiş DB Pro
Taşıma işleminizle ilgili sorun yaşıyorsunuz ve belgelerimizi kontrol ettikten sonra, Bad Behavior'un taşıma işlemleriyle çakıştığı bilinen eklentiler listesinde olduğunu görüyorsunuz. Böylece aşağıdakileri yaparsınız:
- WP Migrate DB Pro'daki Ayarlar sekmesini ziyaret edin
- " Taşıma istekleri için aşağıdaki eklentileri yüklemeyerek performansı ve güvenilirliği artırın " onay kutusunu işaretleyin ve uyarıyı onaylayın
- Listeden Kötü Davranışı seçin
Şimdi bir istek yapıldığında şöyle görünür:
- İsteğin bir WP Migrate DB Pro geçiş isteği olup olmadığını kontrol ederiz ve değilse, WordPress'in sayfa isteğini her zamanki gibi işlemesine izin veririz
- Eğer öyleyse, eklenti kara listesini yüklüyoruz
- Kötü Davranış dışındaki tüm eklentiler yüklenir
- WordPress, sayfa isteğini her zamanki gibi işlemeye devam ediyor
Eklentilerin yüklenmesini yalnızca, isteğin WP Migrate DB Pro'dan bir taşıma isteği olduğunu belirledikten sonra hariç tuttuğumuzu belirtmek önemlidir. Kötü Davranış, diğer istekler için yüklenmeye devam edecek.
Verim
Ancak neden yalnızca Kötü Davranışın yüklenmesini hariç tutmalısınız? Neden Easy Digital Downloads, Envira Gallery, SearchWP ve WordPress SEO'yu da hariç tutmuyorsunuz? Ne de olsa bu eklentiler, taşıma istekleriyle çalışmaz. Aslında, bu eklentiler çok iyi kodlanmış olsalar da, onları yüklemek sadece biraz hafıza tüketir. Çok iyi kodlanmayan diğer eklentiler, yalnızca yükleyerek bir ton bellek kullanabilir.
Taşıma istekleri için tüm eklentilerin yüklenmesini engellemenizi öneririz. Zarar vermez ve geçişlerinizin performansında büyük bir iyileşmeye neden olabilir. Gerçekten akıl almaz bir şey.
Tam olarak nasıl çalışır?
Normal bir WordPress eklentisi, hangi eklentilerin yüklendiğini ve hangilerinin yüklenmediğini kontrol edemez. Bu nedenle, "Geçiş istekleri için aşağıdaki eklentileri yüklemeyerek performansı ve güvenilirliği artırın" onay kutusunu işaretlediğinizde, bu işlevi etkinleştirmek için bir Zorunlu Kullanım (MU) eklentisi yüklemekte sorun olup olmadığınızı soruyoruz. (Benzer şekilde, onay kutusunun işareti kaldırıldığında MU eklentisi silinir.)

MU eklentileri, normal WordPress eklentilerinden çok farklıdır. Normal eklentilerden ayrı olarak özel bir /wp-content/mu-plugins/ klasörüne kurulurlar. O klasörde oldukları sürece aktiftirler. Bunları devre dışı bırakmak için o klasörden kaldırmanız gerekir. Normal eklentiler yüklenmeden önce bir MU eklentisi de yürütülür.
Bu yüzden burada bir MU eklentisi kullanıyoruz. Normal eklentilerin yüklenmesinin önüne geçebilir ve hangilerinin yüklendiğini kontrol edebiliriz.
Bu durumda MU eklentimiz tek bir işlevden oluşur:
function wpmdbc_exclude_plugins( $plugins ) { if ( !defined( 'DOING_AJAX' ) || !DOING_AJAX || !isset( $_POST['action'] ) || false === strpos( $_POST['action'], 'wpmdb' ) ) return $plugins; $wpmdb_settings = get_option( 'wpmdb_settings' ); if ( !empty( $wpmdb_settings['blacklist_plugins'] ) ) { $blacklist_plugins = array_flip( $wpmdb_settings['blacklist_plugins'] ); } foreach( $plugins as $key => $plugin ) { if ( false !== strpos( $plugin, 'wp-migrate-db-pro' ) || !isset( $blacklist_plugins[$plugin] ) ) continue; unset( $plugins[$key] ); } return $plugins; } add_filter( 'option_active_plugins', 'wpmdbc_exclude_plugins' );
Gördüğünüz gibi bir filtreye bağlanıyoruz. Yani get_option( 'active_plugins' ); çağrılırsa, bu işlev yürütülür ve hangi eklentilerin etkin olduğunu değiştirebilir.
İlk koşullu ifade, bir WP Migrate DB Pro AJAX isteğini işleme koymamızı sağlar ve eğer yapmazsak, WordPress'in tüm etkin eklentileri yükleyerek isteği her zamanki gibi sunmasına izin veririz.
Fonksiyonun ikinci kısmı, aktif eklentiler listesinde dolaşır ve birkaç koşulu kontrol eder. İlk olarak, eklentinin WP Migrate DB Pro veya ilişkili eklentilerinden biri olmadığından emin oluyoruz. Bunların yüklenmesini istiyoruz. Ardından, eklentinin hariç tutulacak eklentiler kara listemizde olup olmadığını kontrol ederiz. Varsa, onu etkin eklentiler listesinden kaldırırız ve WordPress etkin eklentileri yüklediğinde yüklenmesini engelleriz.
Bu özellik, WP Migrate DB Pro'nun 1.4 sürümünde mevcut olacaktır. Erken erişim istiyorsanız, beta posta listesine kaydolun.
Bu çözümü bulduğu için ekibimizle gerçekten gurur duyuyorum ve bunun AJAX isteklerini yoğun olarak kullanan ve performansı artırmak isteyen diğer eklentiler ve temalar için bazı sorunları çözebileceğini düşünüyorum. Bu çözüm hakkındaki düşüncelerinizi duymak isteriz. Onu kullanacak mısın? Ne için?
ev borcu WordPress sitesi