WordPress, yazılım ve IT üzerine notlar
Anasayfa » WordPress » WordPress REST API'ye giriş: İçeriğinizi başka uygulamalarla konuşturmak

WordPress REST API'ye giriş: İçeriğinizi başka uygulamalarla konuşturmak

İçindekiler
  1. İlk istek
  2. Kimlik doğrulama: Uygulama şifreleri
  3. Kendi uç noktanızı yazmak
  4. Güvenlik: Neler açık?
  5. Kullanım fikirleri

WordPress 4.7'den bu yana çekirdekte bir REST API bulunuyor. Bu API sayesinde yazılar, sayfalar, kategoriler, kullanıcılar ve medya dosyaları JSON biçiminde okunabiliyor ve yetkiniz varsa oluşturulup güncellenebiliyor. Blok editörünün kendisi de arka planda bu API'yi kullanıyor.

İlk istek

Herhangi bir WordPress sitesinin son yazılarını görmek için tarayıcınızda şu adresi açın:

https://ornek.com/wp-json/wp/v2/posts

Ya da komut satırından:

curl -s "https://ornek.com/wp-json/wp/v2/posts?per_page=3&_fields=id,title,link,date"

_fields parametresi yalnızca istediğiniz alanları döndürür ve yanıtı belirgin şekilde küçültür.

Sık kullanılan uç noktalar:

/wp-json/wp/v2/posts          Yazılar
/wp-json/wp/v2/pages          Sayfalar
/wp-json/wp/v2/categories     Kategoriler
/wp-json/wp/v2/tags           Etiketler
/wp-json/wp/v2/media          Medya dosyaları
/wp-json/wp/v2/users          Kullanıcılar
/wp-json/wp/v2/search?search=yedekleme   Arama

Sık kullanılan parametreler: per_page (en fazla 100), page, search, categories, orderby, order, status. Toplam kayıt ve sayfa sayısı, yanıt başlıklarındaki X-WP-Total ve X-WP-TotalPages alanlarında gelir.

Kimlik doğrulama: Uygulama şifreleri

Herkese açık içerikleri okumak için kimlik doğrulama gerekmez. Ama yazı oluşturmak, taslakları görmek ya da bir şeyi değiştirmek için gerekir.

WordPress 5.6 ile gelen uygulama şifreleri (Application Passwords) bu iş için en pratik yöntemdir:

  1. Kullanıcılar → Profil sayfasının altında "Uygulama şifreleri" bölümüne gidin.
  2. Bir ad verin (örneğin "Haber aktarım betiği") ve yeni bir şifre oluşturun.
  3. Bu şifre yalnızca bir kez gösterilir; kaydedin.

Bu şifreyle HTTP Basic kimlik doğrulaması yapılır:

curl -s -X POST "https://ornek.com/wp-json/wp/v2/posts" \
  -u "editor:abcd efgh ijkl mnop qrst uvwx" \
  -H "Content-Type: application/json" \
  -d '{"title":"API ile eklenen yazı","content":"<p>Merhaba!</p>","status":"draft"}'

Uygulama şifrelerinin avantajları:

  • Asıl şifrenizi hiçbir betiğe ya da uygulamaya vermezsiniz.
  • Her uygulama için ayrı bir şifre oluşturup tek tek iptal edebilirsiniz.
  • Panel girişinde değil, yalnızca API isteklerinde çalışırlar.

Önemli: Uygulama şifreleri yalnızca HTTPS üzerinden kullanılmalıdır. Basic kimlik doğrulaması, şifreyi her istekte gönderir.

Betiğiniz için yönetici değil, işinin gerektirdiği en düşük role sahip bir kullanıcı oluşturun. Yalnızca yazı ekleyecekse "Yazar" ya da "Editör" rolü yeterlidir.

Kendi uç noktanızı yazmak

Hazır uç noktaların karşılamadığı bir ihtiyaç için kendi uç noktanızı kaydedebilirsiniz. Örneğin son siparişlerin özetini döndüren bir uç nokta:

add_action( 'rest_api_init', function () {
    register_rest_route( 'magaza/v1', '/ozet', [
        'methods'             => 'GET',
        'callback'            => 'magaza_ozet',
        'permission_callback' => function () {
            return current_user_can( 'manage_woocommerce' );
        },
        'args' => [
            'gun' => [
                'default'           => 7,
                'sanitize_callback' => 'absint',
                'validate_callback' => fn( $v ) => is_numeric( $v ) && $v > 0 && $v <= 90,
            ],
        ],
    ] );
} );

function magaza_ozet( WP_REST_Request $istek ) {
    $gun = $istek->get_param( 'gun' );
    // ... sorgular ...
    return rest_ensure_response( [ 'gun' => $gun, 'siparis_sayisi' => 42 ] );
}

Bu uç nokta /wp-json/magaza/v1/ozet?gun=30 adresinden erişilebilir.

Burada en kritik parametre permission_callback'tir. Bu fonksiyon, isteği yapan kullanıcının bu işlemi yapmaya yetkisi olup olmadığına karar verir. Eklentilerdeki REST API güvenlik açıklarının büyük kısmı, bu kontrolün eksik ya da yanlış yazılmasından kaynaklanır. Herkese açık olması gereken bir uç nokta için bilinçli olarak '__return_true' yazın; WordPress bu parametre hiç verilmezse uyarı verir.

sanitize_callback ve validate_callback ise gelen parametreleri temizler ve doğrular. Bunları kullandığınızda, callback fonksiyonunuzun içinde girdiyi ayrıca kontrol etmeniz gerekmez.

Güvenlik: Neler açık?

REST API varsayılan olarak bazı bilgileri herkese açar. Bunların çoğu zaten sitenin kendisinde görünen bilgilerdir, ama birkaç noktaya dikkat edin:

Kullanıcı listesi. /wp-json/wp/v2/users uç noktası, en az bir yazı yayımlamış kullanıcıların adlarını ve kullanıcı adı olarak kullanılan "slug" değerlerini gösterebilir. Bu, kaba kuvvet saldırılarında kullanıcı adını tahmin etmeyi kolaylaştırır. Güçlü şifre ve iki adımlı doğrulama asıl korumadır. Ama isterseniz bu uç noktayı giriş yapmamış kullanıcılara kapatabilirsiniz:

add_filter( 'rest_endpoints', function ( $uclar ) {
    if ( ! is_user_logged_in() ) {
        unset( $uclar['/wp/v2/users'], $uclar['/wp/v2/users/(?P<id>[\d]+)'] );
    }
    return $uclar;
} );

REST API'yi tamamen kapatmak ise genellikle iyi bir fikir değildir. Blok editörü, pek çok eklenti ve WordPress'in kendi özellikleri ona bağlıdır. Tamamen kapatmak yerine, gerekiyorsa yalnızca belirli uç noktaları kısıtlayın.

Eklentilerin uç noktaları. Kurduğunuz eklentilerin eklediği uç noktaları görmek için:

curl -s https://ornek.com/wp-json/ | python3 -m json.tool | grep '"/' | head -50

Tanımadığınız bir ad alanı (namespace) görürseniz hangi eklentiye ait olduğunu araştırın.

Kullanım fikirleri

  • Bir mobil uygulamaya ya da başka bir siteye içerik sağlamak (headless WordPress).
  • Bir haber kaynağından, ERP'den ya da üretim sisteminden otomatik taslak yazılar oluşturmak.
  • Birden fazla WordPress sitesinin istatistiklerini tek bir panelde toplamak.
  • Toplu içerik güncellemeleri. Bunlar için sunucuya erişiminiz varsa WP-CLI genellikle daha hızlıdır.

REST API, WordPress'i yalnızca bir site motoru olmaktan çıkarıp başka sistemlerle konuşabilen bir içerik platformuna dönüştürür. Doğru yetkilerle ve dikkatle yazılmış bir permission_callback ile birlikte kullanıldığında da güvenli bir şekilde yapar.

Tezcan Kabakçı
Hosting teknik destek uzmanı ve WordPress uzmanı. 2024'ten beri bir hosting şirketinde teknik destek bölümünde çalışıyor; WordPress, DNS ve e-posta sorunlarını her gün yakından görüyor. YouTube kanalı.
Bu yazı 12 Ağustos 2026 tarihinde WordPress kategorisinde yayınlandı.
Yeni yazılar e-postanıza gelsin

Ayda birkaç e-posta; istediğiniz an tek tıkla ayrılabilirsiniz.

Videolu anlatımlar YouTube'da
Sunucu ve WordPress sorunlarını kısa videolarla anlattığım kanala abone olabilirsiniz. ▶ Kanala abone ol

Yorumlar

Henüz yorum yok. İlk yorumu siz yazın.

Yorum yazın

Yorumlar onaylandıktan sonra yayımlanır. Bağlantı içeren yorumlar spam olarak değerlendirilebilir.