WordPress API Kullanımları

Bu hafta başında WordPress, Jetpack, WooCommerce, Akismet, Gravatar gibi ürünleriyle bildiğimiz Automattic1‘in Tumblr2‘ı Verizon’dan satın almaya hazırlandığı haberine denk geldim3.

AA

Bilindiği üzere Tumblr bir mikro bloglama servisi ve özellikle bir dönem gençler arasında oldukça popülerdi. Zaman içerisinde yeni alternatiflerin ortaya çıkması ve Tumblr’ın yetişkin içeriklerini kapatmasıyla eski popülerliğini yitirdiği bilinmekteydi. Automattic satın alma sürecinin tamamlanması sonrasında süreç ne gösterir kestirmek güç. Özellikle, Tumblr’ın WordPress ile kıyaslandığında farklı bir deneyim sunduğu aşikar. Gelişmeleri ayrıca takip edeceğim. Diğer yandan, bu haber uzun zamandır WordPress üzerine yazı yazmadığımı da hatırlamama vesile oldu ve içerik bağlamını Headless CMS‘in devamı ve Headless WordPres yazılarının da önceli olarak WordPress API‘ler olarak belirledim.

Headless WordPress
Innovating With Headless WordPress

Aşağıda, WordPress API kullanımında sıklıkla referansta bulunacağım bazı yazıları listeliyorum. Bu yazının ardından göz atmanızda fayda olacaktır.

Öncelikle altını çizmek istediğim bir konu var. WordPress bize kullanılabilir pek çok API sunmakta ve bunların pek çoğu kullanıcılar tarafından farkında bile olunmadan WordPress tema, eklenti ve içerik yönetim sürecinde önemli görevler sağlamakta. Örneğin, Shortcode API4 WordPress shortcode kullanımlar için ve Plugin API5 eklenti ilişkilerinde (actions ve filters) kritik işlevler sunmakta. REST API ise bence WordPress’in sahip olduğu işlevselliği bir üst düzeye taşımak ve uygulama çeşitliliği sağlamak adına parlak bir gelecek vaadediyor. Elbette bu saydıklarım sadece öne çıkan API’ler6. Peki, listede daha neler var?

WordPress API’leri

Dashboard Widgets API Metadata API Shortcode API
Database API Options API Theme Modification API
HTTP API Plugin API Theme Customization API
REST API Quicktags API Transients API
File Header API Rewrite API Widgets API
Filesystem API Settings API XML-RPC WordPress API

Güncel liste için WordPress APIs7 sayfasına göz atabilir ve API bağlantılarını tıklayarak kullanım detaylarını görüntüleyebilirsiniz. Gönül ister ki listede yer alan her API için ayrı yazılar yayınlayabileyim. Ancak, maalesef -şimdilik- bu mümkün değil. Bu nedenle, sağladıkları işlevler temelinde karar vererek HTTP API, REST API ve Plugin API ile ilerleyeceğim.

WordPress HTTP API

PHP ile HTTP request gerçekleştirmenin pek çok işlevsel yolu bulunmakta. WordPress HTTP API de bu amaçla kullanılabilecek pek çok fonksiyon barındırmakta. Ancak, unutmamak gerekir ki, web barındırma (hosting) sunucularında farklılıklar söz konusu olabilmekte ve hatta bazı sunucular gerekli özelliklerin hiçbirini desteklemedikleri için sorunlar yaşanabilmekte.

HTTP API, her şeyi mümkün olduğunca basit bir şekilde ele alan tek bir API üzerinde standartlaştırma girişimidir ve WordPress 2.7 sürümünden bu yana kullanılabilmektedir. Ancak, asıl işlevselliğine 2.8 sürümüyle sahip olmuştur. Nesne yönelimli (object-oriented) olan API, ayrıca API işlevlerinden faydalanmayı mümkün kılan yardımcı fonksiyonlara (helper functions) da sahiptir.

Uzun zaman boyunca WordPress Codex altında HTTP API8 ayrı bir bölüm halinde yer almaktaydı. Ancak, güncel durumda Developer Resources9 altından fonksiyonlara ayrı ayrı ulaşmak gerekiyor.

Şimdilik yardımcı fonksiyonlara bir liste halinde bakalım.

  1. wp_remote_get() – Belirtilen URL aracılığıyla GET HTTP metotunu uygular.
  2. wp_remote_post() – Belirtilen URL aracılığıyla POST HTTP metotunu uygular.
  3. wp_remote_head() – Belirtilen URL aracılığıyla HEAD HTTP metotunu uygular.
  4. wp_remote_request() – Belirtilen URL aracılığıyla ön tanımlı olarak GET başta olmak üzere diğer HTTP metotlarının da uygulanabilmesini sağlar.

Yukarıdaki fonksiyonlar bir hata olması durumunda WordPress WP_Error10 sınıfını döndürürler. Aşağıdaki fonksiyonlar ise cevabın farklı kısımlarını almakla ilgilenirler ve işlem aşamasında WP_Error testi yapar. Bu yardımcı fonksiyonlar API’nin kullanımını oldukça basit hale getirir ve yanıt nesnelerinin (response objects) işlenmesi için tercih edilen yöntemlerdir.

  1. wp_remote_retrieve_body() – Yanıt içerisinden sadece body’i alır.
  2. wp_remote_retrieve_header() – Yanıt içerisinden sadece ilgili HTTP header parçasını alır.
  3. wp_remote_retrieve_headers() – İşlem içerisindeki tüm HTTP header’i bir array olarak verir.
  4. wp_remote_retrieve_response_code() – HTTP yanıt değerini verir. Bu genellikle 200 olmalıdır. Ancak, olası başarısızlık durumlarında 4xx veya 3xx gibi değerler de dönebilir.
  5. wp_remote_retrieve_response_message() – Response code temel alarak response message döndürür.

Bir sonraki yazıda HTTP API için ayrıca bir yazı yayınlayacak ve yardımcı fonksiyonlarla örnek işlemler gerçekleştireceğim.

WordPress REST API

WordPress REST API, geliştiricilerin uzak sitelerle etkileşime geçerek JSON (JavaScript Object Notation) nesneleri alıp gönderebilmelerini sağlar. WordPress veri türleri için kullanılabilecek pek çok API endpoint barındırmaktadır. WordPress REST API sayesinde geliştiriciler WordPress içeriklerini istemci tarafında JavaScript’ten veya dış uygulamalardan veya PHP dışındaki dillerden edinebilir ve ilgili alanları güncelleyebilirler.

WordPress REST API ile WordPress yapısı kullanılarak pek çok heyecan verici fikir ve ürün ortaya çıkarılabilmekte. Headless CMS bunun bir örneği, diğer yandan Tek Sayfa Uygulamaları (SPA / Single Page Application) da yine seçenekler arasında yer almakta. Ayrıca, WordPress için tamamen yeni bir yönetici deneyimi sağlamak da mümkün.

Son olarak, WordPress REST API, çekirdekteki admin-ajax API11 yerine daha güçlü bir alternatif olarak hizmet verebilir. AJAX çağrıları REST API kullanarak daha basit bir şekilde gerçekleştirilebilir.

İlerleyen zaman içerisinde WordPress REST API üzerine pek çok yazı ve örnek yayınlayacağım. Şimdilik bu başlığı da burada sonlandıralım. Öncesinde daha detaylı bilgi edinmek isterseniz ilgili WordPress REST API12 sayfasına göz atabilirsiniz.

WordPress Plugin API

Eğer WordPress eklentisi yazma veya var olan bir eklentiyi düzenleme süreçlerine aşina iseniz WordPress Plugin API ile ilgili bir farkındalık oluşturmuşsunuzdur. Çünkü, Plugin API esasında API “Hooks” olarak da ifade edilebilecek bir dizi filter ve action‘dan oluşmakta ve bu sayede eklenti çalışma süreçlerine farklı eklentiler ve/veya tema üzerinden dahil olunabilmekte. Hatta, daha önce yayınladığım WordPress Hooks (Kancalar): Filter ve Action başlıklı yazıda temel bazı açıklamalar düşmüş ve örnek işlemler de paylaşmıştım. Göz atmanızda fayda olacaktır.

Sonuç Olarak

WordPress hem monolith yapısı hem de sunduğu diğer özelliklerle popüler bloglama uygulaması ve platformu olma özelliğini daha bir kaç yıl sürdürecek gibi görünmekte. Özellikle REST API sayesinde daha şimdiden Gatsby gibi farklı yapılar içerisinde de yer almaya başlamış durumda. Ben de mümkün olduğunca bu özellikler üzerine yeni fikirler üretmeye ve bunları örneklendirmeye çalışacağım. Ayrıca, ilerleyen zaman içerisinde yayınlanan ilgili yazıları da yine başlıklar halinde bu yazıya dahil edeceğim.