WooCommerce MCP ve Genişletilebilir Yetenekler (Extensible Abilities) Mimarisi

WooCommerce 11.3 ile gelen Extensible Abilities API mimarisini, yapay zeka ajan entegrasyonlarını ve eklenti geliştirme pratiklerini teknik olarak inceleyin.

WooCommerce MCP ve Genişletilebilir Yetenekler (Extensible Abilities) Mimarisi

WooCommerce Ekosisteminde Yeni Dönem: MCP ve Extensible Abilities

Modern e-ticaret altyapıları, statik API isteklerinin ötesine geçerek yapay zeka ajanları (AI Agents), büyük dil modelleri (LLM) ve otonom sistemlerle doğrudan iletişim kurabilecek mimarilere evrilmektedir. WooCommerce çekirdek ekibinin MCP (Model Context Protocol) entegrasyonu vizyonunun en kritik adımlarından biri olan WooCommerce 11.3, geliştiricilere deneysel olarak sunulan Extensible Abilities (Genişletilebilir Yetenekler) API'sini tanıttı.

Geçmişte üçüncü parti bir eklentinin temel ürün (product) veya sipariş (order) objelerine özel veri alanları eklemesi gerektiğinde, geliştiriciler ya var olan REST API uç noktalarını kancalarla (hooks) manipüle etmek zorunda kalıyor ya da nesnenin tüm yeteneklerini (abilities) sıfırdan kopyalayarak bakım maliyeti yüksek izole çözümler üretiyordu. WooCommerce 11.3 ile gelen bu yeni API, eklentilerin çekirdek yeteneklere sorunsuz şekilde entegre olmasını, tek bir işlem döngüsünde (atomic operation) okuma, yazma ve doğrulama yapabilmesini mümkün kılıyor.

Önemli Not: Bu özellik WooCommerce 11.3 sürümünde varsayılan olarak kapalıdır. Test ortamınızda aktifleştirmek için WooCommerce > Ayarlar > Gelişmiş > Özellikler (Features) yolunu izleyerek deneysel alandaki "Extensible abilities" seçeneğini işaretlemeniz gerekmektedir.


Extensible Abilities Mimarisinin Çözdüğü Temel Sorunlar

Eklenti geliştiricileri uzun yıllardır meta verileri REST API yanıtlarına eklemek için register_rest_field fonksiyonuna bel bağlıyordu. Ancak bu yaklaşım, özellikle yapay zeka ajanlarının bağlamı (context) anlayıp doğrudan schema üzerinden karar verdiği modern MCP mimarilerinde yetersiz kalmaktadır.

Yeni API ile gelen teknik kazanımlar şunlardır:

  • Namespace Ayrımı: Tüm eklenti verileri şemada ve çıktıda extensions.<namespace>.<field> hiyerarşisi altında tutulur. Bu durum alan çakışmalarını tamamen engeller.
  • Atomik Kayıt Süreci: Çekirdek alanlar ve eklenti alanları woocommerce/product-create veya woocommerce/product-update çağrıldığında aynı veritabanı döngüsünde (single save) işlenir. Birden fazla save() çağrısının getirdiği performans yükü ve I/O darboğazı ortadan kalkar.
  • Merkezi Doğrulama (Validators): Herhangi bir eklenti alanı için tanımlanan doğrulayıcı kuralı ihlal edilirse, işlem çekirdek seviyesinde iptal edilir ve veritabanına hiçbir kirli veri yazılmaz.
  • Özelleştirilmiş Sorgu Filtreleri: Ajanlar ve istemciler woocommerce/products-query üzerinden eklenti alanlarına göre dinamik filtreleme yapabilir.
Özellik / KriterGeleneksel REST API (register_rest_field)Yeni Extensible Abilities API
Şema (Schema) DesteğiSınırlı, manuel OpenAPI / JSON Schema eşlemesi gerektirirOtomatik oluşturulan ve ajanların doğrudan okuyabildiği şema
Kayıt Maliyeti (I/O)Genellikle ayrı save_post veya meta kancalarıyla mükerrer SQL yazımlarıTek döngüde (single-pass) atomik veritabanı kaydı
Hata YönetimiDoğrulama hatalarında çekirdek nesne kaydedilmiş olabilirWP_Error ile tüm işlemi geri alma (rollback mantığı)
MCP / AI EntegrasyonuKarmaşık istemci taraflı prompt tanımları gerektirirAjanların 'Tool' olarak doğrudan tüketebileceği standart yapı
Sorgu Esnekliğimeta_query üzerinde karmaşık kancalar yazmayı gerektirirregister_query_filter ile şematik filtre tanımlama

Teknik İnceleme: Hediye Paketi (Gift Wrap) Senaryosu

Mimariyi kavramak adına bir ürünün hediye paketi ücretini (_giftwrap_price) yöneten, sorgulayan ve sanal ürünler için hediye paketini engelleyen uçtan uca bir senaryo oluşturalım. Tüm bu işlemler woocommerce_extensible_abilities_init kancası altında toplanır.

KOD
<?php
declare(strict_types=1);

use Automattic\\WooCommerce\\Abilities\\ExtensibleAbilities;

add_action( 'woocommerce_extensible_abilities_init', function () {
    // 1. Alan Tanımlama (Okuma ve Yazma Yeteneği)
    ExtensibleAbilities::register_field( array(
        'resource'        => 'product',
        'namespace'       => 'giftwrap',
        'field'           => 'price',
        'schema'          => array(
            'type'        => array( 'number', 'null' ),
            'minimum'     => 0,
            'title'       => 'Hediye Paketi Ücreti',
            'description' => 'Ürün için hediye paketi bedeli. Paketleme yapılamıyorsa null döner.',
        ),
        'get_callback'    => function ( WC_Product $product ): ?float {
            $price = $product->get_meta( '_giftwrap_price' );
            return '' === $price ? null : (float) $price;
        },
        'update_callback' => function ( WC_Product $product, $value ): void {
            if ( null === $value ) {
                $product->delete_meta_data( '_giftwrap_price' );
                return;
            }
            $product->update_meta_data( '_giftwrap_price', (float) $value );
        },
    ) );

    // 2. Filtre Tanımlama (Sorgulama Yeteneği)
    ExtensibleAbilities::register_query_filter( array(
        'resource'  => 'product',
        'namespace' => 'giftwrap',
        'filter'    => 'available',
        'schema'    => array(
            'type'        => 'boolean',
            'description' => 'True verilirse paketleme yapılabilen, False verilirse yapılamayan ürünleri listeler.',
        ),
        'callback'  => function ( bool $available ): array {
            return array(
                'meta_query' => array(
                    array(
                        'key'     => '_giftwrap_price',
                        'compare' => $available ? 'EXISTS' : 'NOT EXISTS',
                    ),
                ),
            );
        },
    ) );

    // 3. Doğrulama (Validator) Tanımlama
    ExtensibleAbilities::register_validator( array(
        'resource'  => 'product',
        'namespace' => 'giftwrap',
        'callback'  => function ( WC_Product $product ): ?\\WP_Error {
            // İş Mantığı: Dijital/Sanal bir ürün fiziksel olarak paketlenemez
            if ( $product->is_virtual() && '' !== $product->get_meta( '_giftwrap_price' ) ) {
                return new \\WP_Error(
                    'giftwrap_virtual_conflict',
                    __( 'Sanal ürünler hediye paketi içeremez. Lütfen önce hediye paketi ücretini kaldırın.', 'text-domain' )
                );
            }
            return null;
        },
    ) );
} );

Doğrulama Mekanizmasının Gücü

Yukarıdaki kodda dikkat edilmesi gereken en kritik bileşen register_validator metodudur. Eğer bir yapay zeka ajanı bir istemci üzerinden sanal bir ürünün fiyatını güncellerken kazara hediye paketi ücreti de göndermeye çalışırsa, doğrulayıcı anında devreye girer. API istemciye standart bir WP_Error fırlatır ve çekirdek ürün verisi de dahil olmak üzere veritabanında hiçbir değişiklik gerçekleşmez.


Performans ve Teknik SEO Açısından Etkileri

Yeni yetenek mimarisinin teknik SEO ve site sağlığı açısından dolaylı ama son derece güçlü etkileri bulunmaktadır:

1. Veritabanı ve Sunucu Yükünün Azaltılması

Klasik eklenti mimarisinde, bir ürün güncellenirken önce WooCommerce çekirdeği wp_posts ve wp_postmeta (veya HPOS tablolarına) yazar, ardından her eklenti kendi save_post kancasında ayrı sorgular tetiklerdi. Extensible Abilities mimarisi, nesneyi bellekte (in-memory) tek seferde toplar, doğrular ve tek bir SQL COMMIT döngüsüyle işlemi bitirir. Bu durum veritabanı kilitlenmelerini (deadlock) ve TTFB (Time to First Byte) dalgalanmalarını minimize eder.

2. Ajan Tabanlı Arama (GEO - Generative Engine Optimization)

Arama motorları artık yalnızca HTML taraması yapmamakta; LLM tabanlı arama sistemleri (Perplexity, Google Gemini, OpenAI Search) doğrudan sitelerin API ve MCP katmanlarıyla konuşabilmektedir. Ürün varyasyonlarınızın, stok durumlarınızın veya hediye/ek garanti gibi ek alanlarınızın standart bir JSON Schema altında sunulması, arama ajanlarının sitenizdeki ürünleri doğru yorumlayarak doğrudan tavsiye motorlarına eklemesini sağlar.


Geliştiriciler İçin Aksiyon Planı

  1. Deneysel Ortam Kurulumu: Yerel geliştirme ortamınızda (LocalWP, Docker vb.) WooCommerce 11.3 sürümünü kurun ve gelişmiş ayarlardan özelliği aktif hale getirin.
  2. Mevcut Meta Alanların Denetimi: Eklentilerinizin doğrudan REST API'ye eklediği alanları listeleyin. Bu alanların kaç tanesinin şema doğrulamasından yoksun olduğunu tespit edin.
  3. Namespace Yapısına Geçiş: Geliştirdiğiniz eklentiler için benzersiz ve çakışmayacak bir namespace belirleyin.
  4. ActionableAbility Sınıfını İnceleyin: Kendi özel yeteneklerinizi oluşturmak istiyorsanız Automattic\\WooCommerce\\Abilities\\ActionableAbility soyut sınıfını genişleterek çekirdeğin sunduğu yaşam döngüsünü (lifecycle) kendi iş kurallarınıza uygulayın.

Kaynak: WooCommerce Devs - https://developer.woocommerce.com/2026/10/22/extensible-abilities/

Sıkça Sorulan Sorular

Bu konu hakkında geliştiricilerin ve site sahiplerinin en çok merak ettiği soruların yanıtları.

Hayır, WooCommerce 11.3 sürümünde bu özellik 'deneysel' (experimental) olarak sunulmuştur ve varsayılan olarak kapalıdır. API arayüzünde gelecekteki sürümlerde değişiklikler olabileceğinden, yalnızca test, hazırlık (staging) ve geliştirme ortamlarında denenmesi tavsiye edilir.

Son yazılar

Akordeon (Accordion) İkon Seçimi: Kullanıcı Deneyimi, Erişilebilirlik ve SEO Optimizasyonu

Akordeon (Accordion) İkon Seçimi: Kullanıcı Deneyimi, Erişilebilirlik ve SEO Optimizasyonu

Google'ın Başlık Etiketi Yeniden Yazma Güncellemesi: Kapsamlı Analiz ve Optimizasyon Stratejileri

Google'ın Başlık Etiketi Yeniden Yazma Güncellemesi: Kapsamlı Analiz ve Optimizasyon Stratejileri

Vercel CLI ile Harcama Yönetimi: Sunucusuz Mimarilerde Maliyet ve Altyapı Güvenliği Rehberi

Vercel CLI ile Harcama Yönetimi: Sunucusuz Mimarilerde Maliyet ve Altyapı Güvenliği Rehberi