Varsayılan WordPress REST API Rotaları ve Uç Noktaları Nasıl Kaldırılır

Yayınlanan: 2018-07-31

WordPress REST API, çekirdeğe Aralık 2016'da 4.7 (Vaughan) sürümünde tanıtıldı. WP çekirdeğinde yapılan diğer önemli değişiklikler gibi, şiddetli bir şekilde tartışıldı (şu anda, Temmuz 2018, Gutenberg böyle bir tartışmanın konusu/ tartışma). Sonunda hiçbir şey olmadı. REST API'yi umursamayanlar hala umursamıyor. Umursayanlar bazı uygulamalar, entegrasyonlar, eklentiler ve diğer harika projeler yaptı.

#wordpress REST API, v4.7 çekirdeği ile birleştirilirken insanlar çıldırıyordu! Herhangi bir değişiklik olduğunda çıldırdıkları gibi. Sonunda, her şey yolunda gidiyor.

TWEET İÇİN TIKLAYIN

Ve havalı projeler konusuna girmişken. En başarılı olanların yakında çıkacak bir sayfayla başladığını biliyor musunuz? Ve çoğu durumda, Çok Yakında ve Bakım Modu eklentisi kullanılarak oluşturulmuş çok yakında bir sayfadır.

Çok Yakında ve Bakım Modu

Bu eklenti, bir sürükle ve bırak oluşturucu, 170'den fazla tema, sınıfının en iyisi SEO kurulumu, otomatik yanıtlayıcı ve e-posta hizmetleri ve dakikalar içinde mükemmel bir yakında sayfayı oluşturmanıza olanak sağlayacak diğer birçok özellik ile birlikte gelir. Tüm bunlara ek olarak, eklenti Depositphotos ile entegre edilmiştir, yani en iyi görselleri doğrudan eklentiden bulabilirsiniz. Ancak Depositphotos'un sunduğu koleksiyonun hayranı değilseniz, Yay Images da harika bir stok içeriği kaynağıdır.

Ancak bu kadarı yeter, asıl konumuz olan REST API'ye dönelim.

REST API'yi önemsiyoruz ve onu WP destekli SaaSe'ler oluştururken kullanıyoruz. Kararlı, hızlı, çalışması kolay, WP'ye tam olarak uyar ve çoğu durumda iyi belgelenmiştir. REST API'nin ne olduğunu bilmiyorsanız, bu muhtemelen sizin için bir gönderi değildir, ancak REST API'nin ne olduğunu (video ve metin) kontrol edin ve belki bir sonraki projenizde kullanırsınız.

Rota? uç nokta? Hepsi aynı değil mi?

Hayır, aynı değil. Fark, çoğu insan için belirsizdir ve rota ve uç nokta terimlerini birbirinin yerine kullanırlar, ancak bu o kadar karmaşık değildir. Rota aşağı yukarı URL'dir. Bir uç noktaya erişmek için kullanılan "ad"dır. Tek bir rotada birden çok uç noktanız olabilir çünkü kullandığınız uç nokta, kullandığınız HTTP istek türüne bağlıdır. GET , POST , PUT veya DELETE olabilir ve genellikle farklı amaçlara hizmet eder. GET aracılığıyla sitenize.com/wp-json/v2/posts/1'e erişmeniz, size ID #1'e sahip gönderi için ayrıntıları verecektir. Aynı rotada DELETE kullanmak, o gönderiyi silen farklı bir uç noktayı (veya isterseniz işlevi) çağırır. Resmi REST API el kitabında bu konu hakkında daha fazla bilgi bulunmaktadır, bu nedenle ayrıntılar için derine inin.

#wordpress REST API yolları ve bitiş noktaları aynı şeyler değildir! Rota, bir uç noktaya erişmek için kullanılan "ad" dır. Tek bir rota genellikle birden çok uç noktayla ilişkilendirilir.

TWEET İÇİN TIKLAYIN

Varsayılan WP REST API uç noktalarını veya rotalarını neden kaldırayım?

Varsayılan yeniden yazma kurallarının kaldırılmasıyla ilgili makalede tartıştığımız gibi – bir WordPress geliştiricisinin bunu yapmasının yüzlerce nedeni vardır.
"Tüm bu uç noktaları ayrıştırması gerekmediği için WordPress'i daha hızlı hale getirecek." hala aynı fikirde olmadığım ve kazancın bir milisaniyeden daha az olacağına inandığım bir şey ama zarar veremez.

Her şeyi temiz tutmayı seviyorsunuz ve REST API kullanmadığınız için neden API rotalarınız var? Elbette, mantıklı. Ancak bu durumda, REST API'yi tamamen devre dışı bırakmak için bir eklenti kullanın.

Bir de varsayılan rotaları (ve uç noktaları) devre dışı bırakmamızın nedeni var. Özel REST API uç noktalarını yoğun olarak kullanıyoruz, ancak varsayılanlara ihtiyacımız yok. Bu nedenle, her şeyi yalın ve temiz tutmak güzel. Ayrıca, dış dünyaya daha az sayıda veriyi maruz bıraktığımız için güvenlik açısından da zarar veremez.

Bana varsayılan API uç noktalarını göster

Uç nokta referansı, REST API el kitabında mevcuttur. Herkese açık olan hemen hemen her veri parçası, REST API aracılığıyla da erişilebilir olacaktır. demo.wp-api.org/wp-json/wp/v2/posts için örnek bir istek, JSON formatında on gönderi gösterecektir. Bu yanıtın insan tarafından okunabilir bir sürümünü istiyorsanız, JSON yanıtının kodunu çözmeniz gerekir. Aynısı sayfalar, kategoriler ve diğer veri yapıları için de geçerlidir. Referansa göz atarsanız görebileceğiniz gibi, veri yapısı ve uç noktalar çok benzer.

Varsayılan rotaları görmenin diğer yolu, bu kodu temanızın functions.php dosyasına eklemek ve ardından siteniz.com/wp-json/ dosyasını açmaktır. Henüz yapmadıysanız güzel bağlantıları etkinleştirin.

add_filter( 'rest_endpoints', 'show_default_endpoints' );
 
function show_default_endpoints( $endpoints ) { 
  var_export( array_keys( $endpoints ) );
  die;
}

Varsayılan 31 REST uç noktasını gösterir. Sayı, elbette, yeni temel işlevler eklendikçe değişebilir. Özel uç noktalar ekleyen herhangi bir eklentiniz varsa, durum farklı olacaktır.

Varsayılan uç noktaları kaldırma

Yukarıdaki kod minimum değişiklik gerektirir. Boş bir dizi döndürün ve tüm uç noktalar kaybolur.

add_filter( 'rest_endpoints', 'remove_default_endpoints' );
 
function remove_default_endpoints( $endpoints ) { 
  return array( );
}

"Tüm uç noktalar", özel uç noktalarınızı da içerir, bu nedenle onları silmemek akıllıca olur. İşte onları aktif tutmanın kolay bir yolu:

add_filter( 'rest_endpoints', 'remove_default_endpoints_smarter' );
 
function remove_default_endpoints_smarter( $endpoints ) { 
  $prefix = 'your_custom_endpoint_prefix';

  foreach ( $endpoints as $endpoint => $details ) {
    if ( !fnmatch( '/' . $prefix . '/*', $endpoint, FNM_CASEFOLD ) ) {
      unset( $endpoints[$endpoint] );
    }
  }

  return $endpoints;
}

Özel ön ekinizle uç noktaları atlayın ve dizide tutun. Diziyi döndürmeyi unutmayın.

REST URL önekini özelleştirme

Özel uç noktalar, özel olmalarına rağmen varsayılan uç noktalarla aynı öneki kullanır. mysite.com/wp-json/custom-endpoint/ gibi görünüyorlar. Belki bunu çirkin buluyorsunuz veya varsayılan şeyleri sevmiyorsunuz. Bunu değiştirmek, bir kod satırı meselesidir. Test amacıyla aşağıdaki kodu temanın functions.php dosyasına yerleştirin ve kaydettikten sonra yeniden yazma kurallarını temizlemek için Pano – Ayarlar – Kalıcı Bağlantıları açın.

add_filter( 'rest_url_prefix', 'rest_url_prefix' );

function rest_url_prefix( ) {
  return 'api';
}

Yukarıdaki filtre ile uç noktalarınız mysite.com/api/custom-endpoint/ olacaktır ve eski mysite.com/wp-json/custom-endpoint/ URL'sini açmak 404 hatası verecektir.

Bir önek WP tarafından otomatik olarak eklenmediğinden, özel uç noktalarınıza bir sürüm numarası eklediğinizden emin olun. Sürüm numarası ön eki, yolda yapılacak değişikliklerin eski uç noktaları kullanan istemcileri bozmamasını sağlar. mysite.com/api/v1/custom-endpoint/ gibi bir şey almak için register_rest_route() işlevini çağırırken sürüm önekini eklemeniz ve daha sonra "v2" vb. alabilmeniz için tüm uç noktalarınızı bu "v1"in arkasında tutmanız yeterlidir.

Değişikliklerinizi test edin

REST API rotalarını ve uç noktalarını kaldırmak veya değiştirmek, WP sitelerinin %98'inde herhangi bir fark yaratmaz. "Niye ya?" – Çünkü REST API'sini hiç kullanmazlar. Ancak sizinki varsa, lütfen bağlı uygulamaları test ettiğinizden emin olun çünkü her şeyde olduğu gibi, değişiklikler bazı şeyleri bozabilir. Ve bugün bir hatayı tespit etmek yarından daha iyidir.