WordPress, yalnızca bir içerik yönetim sistemi (CMS) değil, aynı zamanda güçlü bir uygulama çatısıdır. REST API’nin çekirdeğe entegre edilmesiyle birlikte geliştiricilere, WordPress’in verilerine programatik olarak erişme ve bu verilerle işlem yapma olanağı sağlanmıştır. Bu imkan, özel eklentilerin dış sistemlerle haberleşmesini veya kullanıcıya daha gelişmiş arayüzler sunmasını mümkün hale getirmiştir.
Bu makalede, WordPress REST API’yi kullanarak özel bir eklenti nasıl geliştirilir ve bu API ile nasıl entegre olunur, detaylı bir şekilde ele alınmaktadır.
WordPress REST API Nedir?
REST (Representational State Transfer), istemci ve sunucu arasında HTTP üzerinden veri alışverişine olanak tanıyan bir mimari yapıdır. WordPress REST API, WordPress çekirdeğinde yer alan içerikleri (yazılar, sayfalar, kullanıcılar, medya vb.) JSON formatında dış dünyaya sunar. Aynı zamanda, yetkilendirme kullanılarak bu içerikler üzerinde oluşturma, güncelleme ve silme işlemleri yapılabilir.
Neden REST API ile Eklenti Geliştirilir?
- Harici Uygulamalarla İletişim: Mobil uygulamalar veya üçüncü taraf yazılımlarla veri alışverişi sağlanabilir.
- SPA (Single Page Application) Geliştirme: Vue, React gibi kütüphanelerle modern arayüzler inşa edilebilir.
- Gelişmiş Özelleştirme: Standart admin panelinin dışında özel veri yapıları oluşturulabilir.
- İki Yönlü Entegrasyon: Diğer servislerden veri çekip WordPress’e aktarmak veya WordPress verilerini dışa aktarmak mümkün olur.
1. REST API Temelleri
WordPress varsayılan olarak aşağıdaki uç noktaları sağlar:
GET /wp-json/wp/v2/posts— Tüm yazıları listelerPOST /wp-json/wp/v2/posts— Yeni yazı oluşturur (kimlik doğrulama gerekir)GET /wp-json/wp/v2/users— Kullanıcı bilgilerini listeler
Varsayılan uç noktalar dışında, özel eklentilerle kendi API rotalarınızı tanımlayabilirsiniz.
2. Eklenti İçinde Özel REST API Endpoint Oluşturma
Aşağıda temel bir örnek verilmiştir:
add_action('rest_api_init', function () {
register_rest_route('myplugin/v1', '/greeting/', [
'methods' => 'GET',
'callback' => 'myplugin_greeting_function',
]);
});
function myplugin_greeting_function() {
return new WP_REST_Response(['message' => 'Merhaba Dünya!'], 200);
}
Bu kod, wp-json/myplugin/v1/greeting/ adresinden ulaşılabilecek basit bir API uç noktası oluşturur.
3. Parametreler ile Çalışma
Parametreleri kullanarak dinamik yanıtlar dönebilirsiniz:
add_action('rest_api_init', function () {
register_rest_route('myplugin/v1', '/hello/', [
'methods' => 'GET',
'callback' => 'myplugin_hello_user',
'args' => [
'name' => [
'required' => true,
'sanitize_callback' => 'sanitize_text_field'
]
]
]);
});
function myplugin_hello_user($request) {
$name = $request->get_param('name');
return new WP_REST_Response(['greeting' => "Merhaba, $name!"], 200);
}
Kullanım:GET /wp-json/myplugin/v1/hello/?name=Ali
4. Yetkilendirme ve Güvenlik
Veri oluşturma/güncelleme/silme işlemleri için kimlik doğrulama gerekir. Yaygın yöntemler:
- Cookie Auth: Giriş yapılmış kullanıcılar için
- Application Passwords: WordPress 5.6 sonrası yerleşik olarak gelir
- OAuth/JWT: Daha gelişmiş, token tabanlı sistemlerde kullanılır
JWT örneği:
- JWT Authentication eklentisini yükleyin
- Header ile istek gönderin:
Authorization: Bearer YOUR_TOKEN
5. API Üzerinden Veri Yazmak
POST örneğiyle yeni bir yazı oluşturma:
add_action('rest_api_init', function () {
register_rest_route('myplugin/v1', '/create-post/', [
'methods' => 'POST',
'callback' => 'myplugin_create_post',
'permission_callback' => function () {
return current_user_can('edit_posts');
},
]);
});
function myplugin_create_post($request) {
$title = sanitize_text_field($request['title']);
$content = sanitize_text_field($request['content']);
$post_id = wp_insert_post([
'post_title' => $title,
'post_content' => $content,
'post_status' => 'publish',
'post_type' => 'post'
]);
if (is_wp_error($post_id)) {
return new WP_Error('post_creation_failed', 'Yazı oluşturulamadı', ['status' => 500]);
}
return new WP_REST_Response(['post_id' => $post_id], 201);
}
6. JavaScript Tarafında Kullanım (Fetch API ile)
fetch('https://siteniz.com/wp-json/myplugin/v1/hello/?name=Ali')
.then(response => response.json())
.then(data => console.log(data.greeting));
POST örneği:
fetch('https://siteniz.com/wp-json/myplugin/v1/create-post/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_TOKEN'
},
body: JSON.stringify({ title: 'Yeni Yazı', content: 'İçerik buraya gelecek' })
})
.then(response => response.json())
.then(data => console.log(data));
7. Gerçek Hayat Senaryoları
- Mobil uygulamalarla entegrasyon (React Native, Flutter)
- Stok takibi için ERP yazılımıyla veri senkronizasyonu
- Kargo takip sistemlerinin otomatik veri çekmesi
- CRM sistemlerine ziyaretçi verisi gönderimi
8. Dikkat Edilmesi Gerekenler
- API endpoint’lerini yeterli şekilde yetkilendirin ve filtreleyin
- Rate limit gibi mekanizmalarla API kötüye kullanımını önleyin
- Yanıtlarda gereksiz veri ifşasına karşı dikkatli olun
- CORS (Cross-Origin Resource Sharing) yapılandırmasını düzgün yönetin
- WordPress sürüm güncellemeleriyle uyumluluk testleri yapın
Değerlendirme
WordPress REST API, modern web uygulamalarıyla entegrasyonu kolaylaştıran güçlü bir araçtır. Özel eklentiler geliştirirken, bu API’yi kullanmak geliştiriciye büyük esneklik sağlar. Hem WordPress verilerini harici sistemlerle paylaşmak hem de diğer servislerden veri almak için REST API’yi etkin şekilde kullanmak, sitenizin fonksiyonelliğini katbekat artırır. Ancak, her API entegrasyonunda olduğu gibi, güvenlik ve performans konuları göz önünde bulundurulmalıdır.







