1993’te İstanbul’daki bir matbaanın arka odasında elimde bıçakla rubylith maskesi keserken, önümdeki Mac Plus’a QuarkXPress ile Aldus FreeHand’in “renk” dedikleri şeyin aynı şey olup olmadığını soruyordum. Değildi. O çağda iki yazılım arasındaki her el değiştirmede küçük bir pazarlık dönerdi ve pazarlığın yazılı bir tarafı hiç olmazdı. Aradan geçen otuz küsur yılda sektörün büyük çoğunluğu dersini aldı: iki sistem konuşacaksa, alışverişin şeklini telefonla değil makine okuyabilecek bir sözleşmeyle konuşturacaksın.
Make/Core’a geçen cuma düşen dev note, “JSON Schema” sözcüğünü hayatında bir kez bile düşünmemiş olsan bile öğleden sonra on dakikanı vermeye değer. WordPress 7.1, kendi iç şemalarını dış dünyaya — REST istemcilerine, AI sağlayıcılarına, MCP entegrasyonlarına — telefon açmadan ve yanına yanlışlıkla yarım PHP göndermeden teslim eden katmanı sessiz sedasız ekliyor.
Değişiklik küçük. Sonucu büyük. Aşağıda gerçekte ne çıktı, beta bitmeden ben olsam ne yapardım, hepsi var.
Gerçekten yeni olan ne
Milana Cap’in JSON Schema preparation for client compatibility in WordPress 7.1 başlıklı dev note’u 31 Temmuz’da yayımlandı, akran incelemesini Aaron Jorbin yaptı. Not, wp-includes/json-schema.php içinde yaşayan yeni bir fonksiyonu belgeliyor:
wp_prepare_json_schema_for_client(
array $schema,
string $schema_profile = 'draft-04'
): array
Fonksiyon WordPress’in iç şemasını dışa açılabilir, taşınabilir bir temsile çeviriyor. Somut olarak dört iş yapıyor. Özellik seviyesinde yazılmış required => true kısayollarını JSON Schema Draft 4’ün beklediği yere, yani nesne seviyesindeki required dizisine taşıyor. PHP callback’lerini süreç dışına sızdıracak sunucuya özel anahtar sözcükleri — sanitize_callback, validate_callback, arg_options — söküp atıyor. Bunu şemayı özyinelemeli olarak dolaşarak yapıyor; properties, patternProperties, definitions, dependencies, items, additionalItems, additionalProperties, anyOf, oneOf, allOf ve not hepsi aynı muameleyi görüyor. Ve boş PHP dizilerini, JSON doğrulayıcıların boş nesne için gerçekten beklediği {} biçimine çeviriyor.
Kutunun içinde iki şema profili geliyor. Varsayılan olan draft-04, geniş kelime dağarcığını — $ref, definitions, allOf, not, dependencies, additionalItems — koruyor; AI aracı bildirimleri, MCP uç noktaları ve frontend doğrulayıcı gibi bağımsız tüketiciler için düşünülmüş. rest-api ise WordPress REST API alışkanlıklarına uyan daha dar profil. İkisinin arasında bir şey lazımsa yeni wp_json_schema_allowed_keywords filtresi (yardımcısı wp_get_json_schema_allowed_keywords()) çekirdeğe yama atmadan profil başına anahtar sözcük kümesini özelleştirmene izin veriyor.
Senin adına iki iç tüketici zaten bağlanmış durumda. /wp-json/wp-abilities/v1/abilities uç noktası artık REST cevaplarında hazırlanmış şema döndürüyor (changeset [62591]); öte yandan WP_Ability::get_input_schema() ile WP_Ability::get_output_schema() sunucu tarafındaki PHP’ye özgün şemayı vermeye devam ediyor — bu tamamen çıkış sınırında yapılan bir dönüşüm. Çekirdekle gelen AI Client de artık girdi şemasını model sağlayıcısı için işlev bildirimine çevirmeden önce draft-04 profiliyle hazırlıyor. Tüm iş Trac bileti #64955 (Abilities API: Add schema compiler for AI tool calling compatibility) altında; erken changeset’ler [62449] ve [62549] zemini hazırladı.
7.1’de açıkça gelmeyen şey ne: sağlayıcıya özel şema uyarlaması. OpenAI’nin strict modu her nesnede additionalProperties: false istiyor ve oneOf‘u reddediyor; Anthropic ise oneOf‘u anyOf‘a normalleştiriyor. Cap ve incelemeciler bu işi çekirdek fonksiyona satıcı hevesleri gömmek yerine bir sonraki adıma (WordPress/php-ai-client#256) attı. Doğru karar, ve altını çizmek gerek — bu API jenerik, tek bir model sağlayıcısına yaslanmıyor.
WordPress 7.1 GA hâlâ 19 Ağustos 2026; RC1 5 Ağustos’ta, RC2 12 Ağustos’ta. Yani sürüm yönettiğin her sitenin altına inmeden önce staging’de test etmek için iki haftan var.
WordPress ve WooCommerce tarafında neden önemli
WordPress on yıldır kendi JSON Schema lehçesini biriktiriyor. Bu lehçe taşınabilir değil ve bir REST şemasını frontend doğrulayıcıya ya da AI aracına teslim etmeyi denemiş herkes aynı duvara tosladı — özellik seviyesindeki required => true kısayolu Draft 4 ayrıştırıcılarını patlatıyor, callback anahtarları cevabın içinde denize açılıp bunları veri sanan tüketicileri şaşırtıyor. Tanıdığım her ajansın alet çantasında bir yerde bu tarama-temizleme işini yapan minik bir yardımcı var. Çekirdek şimdi bu yardımcıyı yukarıda, bir kez, kendisi yazdı; ve şemaları bakan ekibin ta kendisi bakacak.
Bu, kod farkının anlattığından çok daha önemli. Şemayı üreten katmanla şemayı istemciler için hazırlayan katman aynı ekipse, kayma (drift) duruyor. Sunucu tarafında bir WordPress alışkanlığı değiştiği an, istemci tarafı hazırlığı da onunla birlikte hareket ediyor. Bunu bu işi yapan her eklentinin kendi sürüm takvimiyle, kaymayı aylar sonra fark etmesiyle ve bir Make/Core dev note incelemesinin sağladığı hiçbir gözden geçirmeyi devralmamasıyla kıyasla.
Yükü taşıyan asıl gerekçe AI tarafı. Yine 31 Temmuz’da aynı yazardan çıkan Abilities API improvements dev note‘unu bununla yan yana okumakta yarar var — uç noktaları, doğrulama kancalarını (wp_ability_validate_input, wp_ability_validate_output) ve çağrı yaşam döngüsü aksiyonunu (wp_ability_invoked) isimlendiriyor; ki bunlar modellere şema tipli çağrılar besleyecek. Bu şemalar taşınabilir değilse tool-calling hikâyesi ilk sağlayıcıda çöker. wp_prepare_json_schema_for_client() devrede olunca hikâye 7.1 GA’nın çıktığı gün çalışmaya başlıyor.
WooCommerce özelinde bu, “son yirmi siparişi listele” gibi bir ability’yi bir iç ajana, müşteri hizmetleri asistanına ya da MCP uyumlu bir istemciye açmayı deneyeceğin güne kadar aklına gelmeyecek türden bir sıhhi tesisat. Ve o gün geldiğinde şemanın gidip gelmesi dış dünyayla ilk temasta hayatta kalabilmek için özel bir PHP ara katmanına ihtiyaç duymayacak. Çekirdeğin bu işi yukarıda yapması, WooCommerce eklentilerinin — Store API uçları açanların, ability kaydedenlerin, checkout üstüne B2B mantığı bindirenlerin — Abilities API yüzeyini tükettiği an taşınabilir şemayı bedavaya alması demek.
Ben olsam ne yaparım, ne yapmam
RC1’e kadar iki haftada dört pratik hamle.
Bir: bir istemciye WordPress şeması gösteren herhangi bir eklenti ya da özel uç nokta yönetiyorsan — REST cevabı, JavaScript config, MCP bildirimi, AI işlev bildirimi — sanitize_callback‘i sökmek ve required‘ı yeniden yazmak için kendi elinle yazdığın özel yardımcıları grep’le. Her biri artık beş satırlık bir farkla wp_prepare_json_schema_for_client()‘ı çağırıp yardımcıyı silme adayı. Grep’i staging’de bugün yap, farkı WordPress 7.1 Beta 4 ya da Playground blueprint üstünde çıkar, 7.0 kullanıcıları için sürüm kontrollü bir yedek yol bırak ve platformun devraldığı kodun bakımını üzerinden at.
İki: Cap’in kritik kuralını monitörünün üstüne yapıştır: Kanonik WordPress şemasını sunucu tarafında olduğu gibi bırak; istemciler için sadece bir kopyasını hazırla. Hazırlanmış şema bir izdüşüm. Gerçeğin kendisi değil. Aynı dizi referansı diye orijinali yerinde mutasyona uğratırsan sunucu tarafı doğrulaması ihtiyacı olan callback’leri kaybediyor ve izin kontrollerinin neden düştüğünü daraltmak için bir haftasonu harcıyorsun. Hazırlamadan önce kopyala. Her seferinde.
Üç: bunun üstüne sağlayıcıya özel bir compiler bugün inşa etme. OpenAI strict modu ve Anthropic normalleştirmesi için upstream takibi php-ai-client deposunda tutuluyor ve o iş 7.1’den sonraki bir sürümde inecek. Her nesneye additionalProperties: false yapıştırmak için bugün yazacağın şey, çekirdek kendi sağlayıcı-farkında profilini çıkardığı gün teknik borç olur. Mecbursan wp_json_schema_allowed_keywords üzerinden kendi profilini kaydet — ama bütün boru hattını yeniden yazma.
Dört: 7.1 yükseltme döngüsünü WooCommerce 11.0 penceresiyle üst üste koyma. WooCommerce 11.0 GA şu an 4 Ağustos’a alındı — RC1 yeni bir performans özelliğinde fatal hata çıkardı — WordPress 7.1 GA ise 19 Ağustos. İki hafta ara, aynı üretim mülkü üstünde, rahat. Aynı öğleden sonra aynı triage kuyruğunda ise Store API cevaplarını hangisinin bozduğunu daraltmak için cumartesini harcamanın yoludur. Değişim pencerelerini sırayla tut.
Bir şeyi kesin yapma: reklamı “JSON Schema hazırlama profillerini yapılandırmak için UI ekler” olan hiçbir eklenti kurma. Yüzey tek bir fonksiyon çağrısı ve bir filtreden ibaret. Onu bir ayarlar ekranına sarmak, bu dev note’un tam da emekli etmek için yazıldığı türden teknik borç üretir — ve bu örüntüyü otuz yıldır izleyen biri olarak söyleyeyim, o eklenti 2029’da hâlâ rafta olacak, platform iki kez öteye taşınmış olacak.
Cafcaflı olmayan sıhhi tesisat sürümleri beş yıl sonra hâlâ ayakta duran sürümlerdir. Bu onlardan biri. Çarşamba takvimine on dakika koy, grep’i çalıştır, kendi taşıdığın kodu çekirdeğe teslim et.
Last modified: Ağustos 3, 2026
United States / English
Slovensko / Slovenčina
Canada / Français
Türkiye / Türkçe