WordPress Rest API ile özel istek taşıma
Özel talebin ele alınmasını tanımlamak, özel bir son noktası hazırlamanın birkaç farklı yolu vardır. En hızlı bitiş noktası WordPress’ten tamamen bağımsız olabilir ve web sunucusuna yüklenen mandiri PHP dosyası kadar basit olabilir. Hızlı olmasına rağmen, çok yararlı olmayabilir, çünkü genellikle çok fazla geliştirme süresi tasarrufu sağlayan herhangi bir WordPress çekirdek işlevine erişemeyecektir. Her şeyi kısa süreli en hızlı yaklaşımla hızlandırın, temalar ve eklentiler gibi şeyleri yüklemeden temel işlevi kullanabilmek için yeterli WordPress içermektir. Ajax isteği bu dosyayı özellikle hedefleyecektir, bu nedenle sunucuda kamu tarafından erişilebilecek bir yere yerleştirilmelidir.
Bunu yapmanın birkaç yolu vardır, ancak bu gördüğüm en yaygın yaklaşımdır: time ()));Yukarıdaki dosya birkaç şey yapar.İlk olarak, WordPress’e Ajax’ın isteğinin verildiğini söylemek için Douting_ajax sabitini tanımlar.Sonra WordPress’e WordPress’in temellerini içermesini ve fazla değil, çok fazla değil, kısa bir sabiti tanımladı.Daha sonra manuel olarak wp-yük.php gerektirir (bu genellikle kötü bir uygulamadır, çünkü bu dosyanın konumu kurulum arasında değişebilir), istekleri doğru şekilde sunmak için gereken diğer birkaç dosyayı içerir.Sonunda talebe JSON tarafından getirilen zamanla cevap verdi.
Bunu gördüğümde, meslektaşım Evan, wp-yük.php’nin yerini bilmesi gerekmeyen başka bir yaklaşım izledi. Bu, wp-config.php.php: / ** * ‘deki özel istekleri tanımlayan parametreleri dinleyerek elde edilebilir. -ajax ‘)) {tanım (‘ Shorinit ‘, true); Tanımlama (‘dbi_ajax’, true); } /* Hepsi bu, düzenlemeyi bırak! Mutlu bloglama. * / / ** WordPress dizinindeki mutlak yol. */ İf (! Tanımlı (‘abspath’)) tanımlayın (‘abspath’, dirname (__ dosya__). ‘/’); /** WordPress Vars’ı ve dosyaları içeren dosyaları ayarlar. */ Requir_once (abspath. ‘Wp-settings.php’); if (tanımlanmış (‘dbi_ajax’)) {wp_send_json (array (‘time’ => time ()); } Bu, yukarıdaki ilk yaklaşıma benzer. İstek DBI-AJAX parametreleri içeriyorsa (bunun özel bir istek olduğunu biliyoruz), WordPress’e önemli şeyler içermesini söyleyen kısalık sabitini tanımlarız. Ayrıca DBI-Ajax parametresini tekrar kontrol etmeden özel isteklerin yapılıp yapılmadığını kolayca öğrenebilmemiz için DBI_AJAX sabitini de tanımlıyoruz. Daha sonra WordPress yüklendikten sonra (WP-Sittings.php gerektiğinden sonra) isteği sunabiliriz. Genellikle bu noktaya bu işlevselliği içeren diğer dosyaları eklemenizi tavsiye edeceğiz, ancak bu kıyaslama amaç için yalnızca yukarıdaki örnekte olduğu gibi JSON tarafından getirilen zamanı iade ediyoruz.
So Little WordPress içerir Bir dizi benzersiz zorlukla birlikte gelir. Tüm WordPress çekirdek işlevleri mevcut olmayacaktır, bu nedenle ihtiyacınız olan işlev mevcut değilse, dosyayı bulunduğu yere izlemeniz ve manuel olarak girmeniz gerekir. İsteğinizi ele alarak ne yapılması gerektiğine bağlı olarak, bu bir yük olabilir. Ayrıca, manuel olarak wp-load.php gerektirir veya wp-config.php düzenlenmesini gerektirir ve çok sayıda kurulumda dağıtılacak eklentiler veya temalarda yapılamaz. Daha iyi alternatif mi? Mümkün olan bir diğer yaklaşım da eklentide özel istek işlemesi yapmaktır. Bu şekilde, WordPress çekirdeği yüklendikten sonra herhangi bir özel talebe yanıt verebildi, ancak eklenti ve tema yüklenmeden önce. Bu, performansı artıracak ve dinlenme yangınları veya admin-ajax.php kullanan diğer eklentilerden gelen çatışmaları önleyecektir.
time ())); Yukarıdaki eklenti, DBI-AJAX parametreleri içeren bir isteği dinler (herhangi bir isteğe yanıt olarak önlemek için) ve daha sonra JSON’daki zamanı önceki örnekte olduğu gibi tamamlamak için WP_SEND_JSON () kullanır.
Özel isteklerin son noktası için iki potansiyel çözümle birkaç ölçüt çalıştırarak, birkaç kriter çalıştırma zamanı. İşleri önceki makaleyle biraz tutarlı tutmak için, son noktadan ortalama yanıt süresini hissetmek için kısa sürede sunucuya yüzlerce HTTP isteği göndermek için ApacheBench’i kullanıyorum. Ayrıca aynı set eklentisini de etkinleştiriyorum: ACF
Akiset
Black Tinymce Studio Widget
WP Geçiş DB
WP Süper Önbellek
Seo yoast
İlk olarak, güçlü bir temelimiz olması için API’nin kıyaslama geri kalanına tekrar bakalım:
100 istekten sonra, ortalama yanıt süresi 264ms’dir. Bu aslında aynı testi aynı sunucuda (490 MD) çalıştırdığımda geçen yıldan çok daha hızlı, ancak şimdilik, özelliğin sonuçlarını değerlendirmek için kullanılabilecek bir temel olarak 264 MD’nin ortalama yanıt süresine odaklanalım. bitiş noktası.
Shortinite Kıyaslamalar Ardından, kısa süreli sabiti tanımlayarak minimum dosyayı içeren özel bitiş noktasına bakalım.
Ortalama yanıt süresi 144 ms (REST API’sına kıyasla% 45 azalma) ile, bu bitiş noktasının performansı Mandiri dosyaları ve API dinlenme arasındadır. Bu, WP-Load.php’nin konumunu bilmeden WordPress çekirdek işlevini kullanabilen özel istekleri işlemek için iyi bir çözüm haline getirir. Sonuç Yanıt süresi, büyük miktarda talep gönderecek bir başvuru geliştirirken tek düşünceniz olmamalıdır.Ayrıca, geliştirme süresini önceden ve bitiş noktasını desteklemek için harcayabileceğiniz zamanı düşünmek de akıllıca.Partide çok fazla veri işleyen veya eklenti/tema çatışması potansiyelinin daha yüksek olduğu eklentiler gibi performansın çok önemli olduğu bazı kullanım durumlarında, özel bir bitiş noktası kullanmak mantıklı olabilir.Çoğu zaman, daha önce yapılmış ve resmi olarak desteklenen bir çözüme sahip olmak, kendi son noktanızı elde etmekten performansın potansiyel faydalarından çok daha büyük olacaktır. Eklentinizde veya temanızda özel bir bitiş noktası kullanıyor musunuz?Eğer öyleyse, API dinlenmesine geçmeyi düşünecek misiniz?Neden veya neden olmasın?Bana yorumlarda söyle.