GitHub|Since 2007
Adım 3

WordPress REST API Kontrolü

WordPress sitenizin REST API'sinin açık olup olmadığını kontrol edin, endpoint'leri öğrenin ve güvenlik ayarlarını yapın.

10 dk

REST API Nedir?

REST API, WordPress'in içeriklerini (yazılar, sayfalar, kategoriler, medya) JSON formatında dış dünyaya sunmasını sağlar. Headless mimaride Next.js bu API'yi kullanarak içerikleri çeker.

API'nin Açık Olduğunu Kontrol Edin

Tarayıcınızda şu adresi açın (kendi sitenizin adresini yazın):

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

Eğer JSON formatında yazılarınızı görüyorsanız, API aktif demektir! 🎉

Tüm Endpoint'ler

WordPress REST API birçok endpoint sunar:

EndpointAçıklama
/wp-json/wp/v2/postsBlog yazıları
/wp-json/wp/v2/pagesSayfalar
/wp-json/wp/v2/categoriesKategoriler
/wp-json/wp/v2/tagsEtiketler
/wp-json/wp/v2/mediaGörseller ve medya
/wp-json/wp/v2/usersYazarlar
/wp-json/wp/v2/commentsYorumlar

Önemli Parametreler

# İlk 10 yazıyı getir
/wp-json/wp/v2/posts?per_page=10

# Embedded verilerle (görsel, yazar)
/wp-json/wp/v2/posts?_embed

# Belirli kategorideki yazılar
/wp-json/wp/v2/posts?categories=5

# Slug ile yazı bul
/wp-json/wp/v2/posts?slug=merhaba-dunya

API Kapalıysa Ne Yapmalı?

Eğer API çalışmıyorsa şu nedenleri kontrol edin:

1. Güvenlik Eklentisi Engeli

Wordfence, iThemes Security, All In One WP Security gibi eklentiler API'yi kapatabilir.

  • Bu eklentilerin ayarlarına gidin
  • 'REST API' veya 'JSON API' ayarını bulun
  • API'yi açın veya whitelist ekleyin

2. Permalink Yapısı

WordPress'te Ayarlar > Kalıcı Bağlantılar bölümüne gidin ve 'Düz' dışında bir seçenek seçin.

3. .htaccess Sorunu

Apache sunucularda .htaccess dosyası API'yi engelleyebilir.

CORS Ayarları

Next.js farklı bir domain'den API'ye erişecek. CORS izni gerekebilir. WordPress'e şu kodu ekleyin:

functions.php dosyasına:

add_action('rest_api_init', function() {
    remove_filter('rest_pre_serve_request', 'rest_send_cors_headers');
    add_filter('rest_pre_serve_request', function($value) {
        header('Access-Control-Allow-Origin: *');
        header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
        header('Access-Control-Allow-Headers: Content-Type');
        return $value;
    });
});

API Güvenliği

  • Sadece okuma (GET) endpoint'lerini açık tutun
  • Yazma (POST, PUT, DELETE) için kimlik doğrulama isteyin
  • Rate limiting uygulayın (çok fazla istek engelleme)

Yorumlar ve Tartışma