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/postsEğ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:
| Endpoint | Açıklama |
|---|---|
/wp-json/wp/v2/posts | Blog 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 | Görseller ve medya |
/wp-json/wp/v2/users | Yazarlar |
/wp-json/wp/v2/comments | Yorumlar |
Ö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-dunyaAPI 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)