WooCommerce'de CRUD Veri Depolarını Genişletme
Yayınlanan: 2018-01-25CRUD'yi duydunuz mu? Programlamada, hepimizin verilerimizle gerçekleştirdiğimiz temel işlemler olan Oluştur , Oku , Güncelle ve Sil anlamına gelir. Ürünleri, siparişleri, müşterileri, kuponları ve veritabanınızda depolanan diğer verileri içeren WooCommerce ile.
CRUD ile ilgili olarak WooCommerce'de yapılan son değişiklikler, platformun daha ölçeklenebilir olma yolunda olduğu anlamına geliyor. Not: Bu gönderi tekniktir ve PHP koduyla belirli bir rahatlık düzeyine sahiptir.
Ses öğrenen? Bu gönderideki noktalar, WooConf 2017'deki konuşmamdan alınmıştır.
Daha ölçeklenebilir bir WooCommerce
Geliştiricilerimizin hayatlarını kolaylaştırmak için WooCommerce 3.0'a özel CRUD nesneleri ekledik. Bu, WooCommerce'deki önceki tüm meta kodunun yerini alır ve ayrıca bir WooCommerce sitesinin ölçeklenmesini sağlamak için tüm uzantılar tarafından kullanılmalıdır.
Aynı zamanda, WooCommerce verilerinizi veritabanına yüklemek ve veritabanından kaydetmek için tasarlanmış Veri Depoları adlı başka bir nesne grubu ekledik. Bu soyutlamalar, WooCommerce'in daha büyük miktarda sipariş, ürün ve müşteriyle ilgilenmesini sağlamak için tasarlanmıştır. Bu, verileri depolamak için farklı yöntemler kullanmasını sağlamak için WooCommerce'e bağlanarak gerçekleştirilir.
Her veri deposu uygulaması, ister bir veritabanından isterse veriyi tamamen depolamanın başka bir yolundan olsun, verilerin nasıl depolandığını ve alındığını belirler. Bunları kullanarak, milyonlarca siparişi işleyebilen uygulamalarla WooCommerce'i kurumsal satış hacimlerine kadar ölçeklendirmek artık mümkün. Yapılması gereken tek şey, WooCommerce'in verileri depolamak için ne kullandığını yeniden tanımlayan bir filtreye bağlanmaktır.
CRUD ve veri deposu soyutlamalarının sağlayabileceği performans geliştirmelerine ek olarak, bu yapılar WooCommerce mağazanız için verileri kaydetme ve yükleme konusunda çok daha fazla esneklik sağlar. Her bir WooCommerce verisi türü (ürünler, siparişler, müşteriler vb.) için artık bu verilerin nereden gelmesi ve nereye gitmesi gerektiğine programlı olarak karar verme olanağına sahipsiniz. Bu, mağaza kurucularının, diğer sistemlerle arabirim kurarak veya WooCommerce'in farklı bölümlerinin performansını gerektiği gibi yükselterek, WooCommerce'i ihtiyaçlarına göre uyarlamalarına olanak tanır.
CRUD ve veri deposu soyutlamalarının sağlayabileceği performans geliştirmelerine ek olarak, bu yapılar WooCommerce mağazanız için verileri kaydetme ve yükleme konusunda çok daha fazla esneklik sağlar.
Bu tam olarak ne anlama geliyor? Peki, olasılıkları bir düşünün:
- Sipariş verilerini wpdb'den ayrı bir veritabanına kaydetme.
- Başka bir sistemdeki mevcut bir veri tabanından ürün verilerinin alınması.
- Ürün envanterini birden çok sitede paylaşma (aşağıdaki örnek).
Başka bir kaynaktan bir API aracılığıyla ürün verilerinin getirilmesi.
Bir veri deposundan yüklemek ve diğerine kaydetmek için bir CLI komutu oluşturma (yerleşik içe/dışa aktarma).
Veri depolarını genişletme
CRUD ve veri deposu soyutlamaları ile WooCommerce artık verilerin nereden geldiği veya nasıl kaydedildiği ile ilgilenmiyor. Hepsini kendin kontrol edebilirsin.
Aşağıdaki örnekte ayrı bir servisten stok sayımı alıyorum ve her bir ürün nesnesinin sadece stok sayımı değiştiriliyor. Bunu yapmanın bir yararı, aynı envanter sayısından birden fazla WooCommerce sitesine satış yaptırabilmem ve hisse senedimi aşırı satmadığımdan emin olmam.
İşte giriş noktası, install_data_store
filtresi.
Gerçek veri deposu için uygulanacak iki arabirim vardır: WC_Object_Data_Store_Interface
ve WC_Product_Data_Store_Interface
.
Bu veri deposu, mevcut veri deposunu (genellikle varsayılan meta sonrası uygulama) genişletmek için tasarlanmıştır. Oluşturucusunda mevcut veri deposunu alır ve yalnızca envanterin işlenme şeklini değiştirir. Diğer her şey normal olarak mevcut veri deposu aracılığıyla işlenir.
Gerekli işlevlerin çoğu için bu veri deposu yalnızca ana veri deposunu çağırır:
Bu veri deposunun getirdiği tek değişiklik, envanterin nasıl okunduğudur. Bu durumda, normal olarak ana veri deposundan okur ancak geri dönmeden önce stok miktarını geçersiz kılar:
CRUD ve veri deposu soyutlamaları ile WooCommerce artık verilerin nereden geldiği veya nasıl kaydedildiği ile ilgilenmiyor. Hepsini kendin kontrol edebilirsin.
Yukarıdaki stok miktarı bir API'den alınır. Gerçek dünyadaki bir uygulamada, bu API çağrısı bir envanter kontrol sistemine veya bir POS'a veya hatta başka bir WooCommerce sitesine gidebilir.
Yukarıdaki örnek için tam kod şu adreste mevcuttur: https://github.com/coderkevin/woocommerce-product-inventory-datastore
CRUD nesneleri ve veri depoları ile sonsuz olanaklar
Yukarıdaki örneklerde gösterildiği gibi, olasılıklar sonsuzdur. 30 Ocak'ta piyasaya sürülecek olan WooCommerce 3.3, CRUD ile ilgili heyecan verici bir dönüm noktası daha içeriyor. Daha fazlası: WooCommerce 3.3 Yeni Web kancaları CRUD.
CRUD nesneleri ve veri depoları ile yeni ve ilginç şekillerde veri çözümleri oluşturmak için hayal gücünüzü kullanın ve Yorumlar bölümünde veya WooCommerce Slack topluluğuna katılarak bize nasıl davrandığınızı bildirdiğinizden emin olun.