Neden WordPress REST API ile İçerik Yayınlamalısınız?
WordPress REST API, sitenize dışarıdan içerik göndermenin en güvenilir yoludur. İster kendi yazdığınız bir Python betiğiyle, ister bir AI ajanıyla — hiç wp-admin paneline girmeden yazı yayınlayabilirsiniz. Özellikle otomasyon sistemleri, cron job’lar ve AI araçları için REST API vazgeçilmezdir.
Bu yazıda WordPress REST API ile dışarıdan içerik yayınlama işlemini adım adım anlatıyorum. Application Password oluşturmaktan JSON payload hazırlamaya, kategorilerden Rank Math SEO meta alanlarına kadar her şeyi göreceksiniz.
Adım 1: Application Password Oluşturma
REST API ile yazı göndermek için normal WordPress şifrenizi kullanmayın. Bunun yerine Application Password oluşturun:
- WordPress yönetici paneline gidin: Kullanıcılar > Profil
- Sayfanın altında Application Passwords bölümünü bulun
- Bir isim verin (örneğin “SEO Yayıncı”) ve Yeni Uygulama Şifresi Ekle‘ye tıklayın
- Oluşan 16 haneli şifreyi güvenli bir yere kaydedin — bir daha göremezsiniz
Bu şifreyi doğrudan betik dosyanızda yazmak yerine .env dosyasında saklayın ve dosya iznini chmod 600 yaparak sadece sizin okumanızı sağlayın. API anahtarlarını güvenli saklama rehberimize göz atabilirsiniz.
Adım 2: REST API ile Kimlik Doğrulama
Application Password ile kimlik doğrulama yapmak için Basic Auth kullanın. Python ile şöyle görünür:
import requests
base = "https://siteniz.com"
auth = ("kullanici_adiniz", "application_password")
# Kimlik doğrulamayı test et
r = requests.get(
f"{base}/wp-json/wp/v2/users/me",
auth=auth,
timeout=20
)
print(r.status_code) # 200 = başarılı
Eğer 401 rest_not_logged_in hatası alırsanız, normal WordPress şifrenizle Basic Auth çalışmaz. Application Password kullandığınızdan emin olun.
Adım 3: JSON Payload Hazırlama
Bir yazı yayınlamak için REST API’ye JSON formatında veri göndermeniz gerekir:
payload = {
"title": "Örnek Blog Yazısı",
"content": "<p>Yazı içeriği buraya gelir.</p>",
"excerpt": "Kısa açıklama",
"slug": "ornek-blog-yazisi",
"status": "publish",
"categories": [3],
"tags": [18, 94]
}
Burada dikkat etmeniz gereken noktalar:
- slug — yazının URL’de görünen kısmı, boşluk yerine tire kullanın
- status —
publish(yayınla),draft(taslak) veyafuture(zamanlanmış) - categories — kategori ID’lerini içeren dizi
- tags — etiket ID’lerini içeren dizi
Kategori ve etiketleri önceden sorgulamak için /wp-json/wp/v2/categories ve /wp-json/wp/v2/tags endpoint’lerini kullanabilirsiniz.
Adım 4: POST İsteği ile Yazı Oluşturma
r = requests.post(
f"{base}/wp-json/wp/v2/posts",
json=payload,
auth=auth,
timeout=30
)
if r.status_code == 201:
post = r.json()
print(f"Yazı yayınlandı: {post['link']}")
print(f"ID: {post['id']}, Slug: {post['slug']}")
else:
print(f"Hata: {r.status_code} - {r.text[:200]}")
Başarılı bir yanıtta 201 Created kodu döner ve yazının ID’si, link’i, slug’ı gibi bilgiler JSON içinde gelir.
Adım 5: Rank Math SEO Meta Eklemek
Normal POST ile gönderilen yazılarda Rank Math meta alanları bazen kaydedilmeyebilir. Bunun için Rank Math’ın kendi endpoint’ini kullanmanız gerekir:
rm_payload = {
"objectType": "post",
"objectID": post_id, # az önce oluşturduğunuz yazının ID'si
"meta": {
"rank_math_title": "SEO Başlık Örneği",
"rank_math_description": "Meta açıklama buraya",
"rank_math_focus_keyword": "WordPress REST API içerik yayınlama"
}
}
r = requests.post(
f"{base}/wp-json/rankmath/v1/updateMeta",
json=rm_payload,
auth=auth,
timeout=30
)
if r.status_code < 400:
print("Rank Math meta kaydedildi!")
Bu işlemden sonra yazıyı context=edit parametresiyle sorgulayarak meta alanlarını doğrulayabilirsiniz.
Otomasyon İçin İpuçları
REST API’yi düzenli içerik yayınlamak için kullanıyorsanız şunlara dikkat edin:
- Slug çakışmasını kontrol edin: göndermeden önce
/wp-json/wp/v2/posts?slug=ornek-baslikile sorgulayın - Kırpma (chmod 600) uygulanmış bir
.envdosyasında Application Password’ü saklayın - Kategorileri ve etiketleri otomatik oluşturmayı düşünün — yoksa varsa bul, yoksa oluştur mantığı
- Türkçe karakterleri slug’da kullanmayın:
ı-ü-ş-ö-çyerinei-u-s-o-cdönüşümü yapın - Yayın durumunu önce
draftyapıp doğruladıktan sonrapublish‘e çekmek güvenli bir yaklaşımdır
Hermes Agent ile cron jobs makalemizde bu yöntemi kullanarak AI ajanınıza günlük SEO yazıları yayınlatmayı anlattım. Ayrıca kendi geliştirdiğim WooCommerce Bireysel Kurumsal Fatura eklentisi de REST API üzerinden fatura verilerini yönetiyor.
Sık Karşılaşılan Hatalar ve Çözümleri
401 Unauthorized
Application Password yanlış veya yazının yazarı olan kullanıcının yetkisi yetersiz. Kullanıcının Yazar (Author) veya Editör (Editor) rolünde olduğundan emin olun.
403 Forbidden
REST API erişimi bir güvenlik eklentisi tarafından kısıtlanmış olabilir. Bolcal Anti Spam gibi eklentilerin REST API ayarlarını kontrol edin.
Payload İşlenmiyor / Eksik Alanlar
JSON içinde content ve title alanlarının boş olmadığından emin olun. HTML içeriği string olarak gönderirken tırnak işaretlerini escape etmeyi unutmayın.
Sonuç
WordPress REST API ile dışarıdan içerik yayınlama, özellikle otomasyon ve AI araçları kullananlar için harika bir yöntem. Application Password ile güvenliği sağlayın, JSON payload’ınızı doğru hazırlayın ve Rank Math endpoint’ini kullanarak SEO meta alanlarını da eklemeyi unutmayın.
Bu yöntemi kullanarak AI ajanınıza günlük içerik üretimi yaptırabilir, Hermes Agent ile AI ajan otomasyonu kurulumunu bir adım öteye taşıyabilirsiniz. Kendi projelerinizde REST API’yi nasıl kullandığınızı iletişim sayfasından bana yazabilirsiniz.