WordPress REST API ile Eklenti Entegrasyonu Nasıl Yapılır?

WordPress REST API’yi kullanarak özel eklenti nasıl geliştirilir ve bu API ile nasıl entegre olunur, detaylı şekilde ele alınmaktadır.

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ı listeler
  • POST /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:

  1. JWT Authentication eklentisini yükleyin
  2. 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.

WPW

WPW

İçerik yazarı, teknolojiye meraklı, grafik tasarımcı, sosyal medya ve seo danışmanı...

Articles: 869