Ne yapar
Tek bir kişi için üretilen bir ürün normal ürün sayfasına sığmaz. Müşteri size fotoğraf göndermeli, siz o şeyi yapmalısınız ve siz malzemeyi harcamadan önce müşteri görüp kabul etmeli. Elle yapıldığında bu bir e-posta zinciridir ve zincir hep aynı yerden kopar: müşterinin, gerçekten bastığınız sürümü onaylayıp onaylamadığını kimse kesin söyleyemez.
MevvAtelier bu zinciri siparişin bir parçası yapar. Fotoğraflar, önizleme, onay ve onayın zamanı siparişin üstünde durur; geçtiği durumlar da gerçek WooCommerce sipariş durumlarıdır, yani sipariş listesinde, raporlarda ve halihazırda kullandığınız süzgeçlerde görünürler.
- Ne zaman kullanın?
- Müşterinin gönderdiği bir şeyden sipariş başına üretim yapıyorsanız ve üretim başlamadan önce onayının kayıt altına alınmasını istiyorsanız.
- Ürün seçenekleri eklentisi değildir
- Varyasyon matrisi yok, ürün başına seçenek oluşturucu yok. Siparişe özel ürettiğiniz bir ürün hattı için tek bir hat ve tek bir yapılandırıcı sayfası vardır.
- Fotoğraflar ortam kitaplığı eki değildir
- Kendi saklama süresi olan özel dosyalardır. Bir müşterinin fotoğrafı ürün fotoğrafı değildir ve öyle muamele görmez.
Gereksinimler: WordPress 6.0 veya üstü, PHP 8.1 veya üstü ve WooCommerce. WooCommerce yoksa eklenti kendini durdurur ve bunu söyler — geri düşeceği kendine ait bir sipariş hattı yoktur.
Ayarlar ve geriye kalan tek sınır
Bir mağazanın normalde değiştirdiği her şey Atölye → Ayarlar altında: her paketin adı, bir ile altı kişi için tutarı, iki ek seçeneğin fiyatı, boya setinin hangi pakette hediye olduğu, sayfa açıldığında hangisinin seçili geleceği ve fotoğrafların ne kadar saklanacağı.
Fiyatları lira olarak yazarsın, eklenti kuruş tam sayısı olarak saklar. Kaydetme ya hep ya hiçtir: bir alan okunamazsa hiçbiri yazılmaz ve ekran hangisi olduğunu söyler. Yarısı yazılmış bir fiyat tablosu, tam müşteri sipariş verirken patlayan tablodur.
- Bir paketi yeniden adlandırmak
- Eklentiyle gelen adlar 3D baskı biblolara göre yazılmıştır, çünkü ilk yazıldığı dükkân oydu. Kendi adlarını yaz — “Küçük kolye ucu”, “Kazıma plaket”, “A4 baskı” — müşterinin gördüğü o olur. Her alanın yanındaki iç anahtar hiç değişmez, böylece mevcut siparişler doğru şeyi göstermeye devam eder.
- Beşten az paket satmak
- Bir paketin adını boş bırak; sipariş formundan kaybolur ve biri yine de göndermeye kalkarsa sunucu reddeder. Fiyatları tabloda durmaya devam eder, yani sonra geri açmak tek bir kelimedir, baştan yazmak değil.
- Açılışta hangi paket seçili gelsin
- Teknik değil ticari bir karar: orta kademe müşteriyi yukarı çapalar, en ucuz aşağı. Seçtiğin paket sonradan kapatılırsa form, hiç fiyatsız açılmaktansa açık kalan ilk pakete düşer.
GERİYE KALAN SINIR: beş paket yuvası var. Adlarını değiştirebilir, fiyatlandırabilir ve kapatabilirsin, ama altıncıyı ekleyemezsin. Hattın daha fazlasını gerektiriyorsa bize yaz ve kaç tane olduğunu söyle — sırada o var ve gerçek sayıyı bilmek onun şeklini belirliyor.
Kurulum
- Önce WooCommerce’u kurup etkinleştirin. MevvAtelier onsuz açılmayı reddeder.
- MevvAtelier’i kurun: zip dosyasını Eklentiler → Yeni Ekle üzerinden yükleyin ya da
mevvatelierdizinini/wp-content/plugins/içine kopyalayın. - Etkinleştirin. Etkinleşirken eklenti sipariş durumlarını kaydeder, fotoğraf kasası dizinini oluşturur ve günlük saklama görevini zamanlar.
- Bir sayfa açıp içine
[mevvatelier]kısa kodunu koyun. O sayfa sipariş formunuzdur. - Sayfadan bir deneme siparişi verin, sonra yönetim menüsündeki Atölye’yi açıp siparişi baştan sona bir kez yürütün. Bunu sayfanın reklamını yapmadan ÖNCE yapın — tur beş dakika sürer ve mağazanızın gerçekte gönderdiği e-postaları görmenin tek yolu budur.
Onay bağlantıları, ilk kullanımda üretilip kendi veritabanınızda saklanan bir gizli anahtarla imzalanır. Anahtar sunucunuzdan hiç çıkmaz ve bizde duran hiçbir şeyden türetilmez.
Üç kısa kod
- [mevvatelier]
- Sipariş formu. Beş adım: paket, sahnede kaç kişi olduğu, fotoğraflar, müşterinin bilgileri ve bir rıza kutusu. Müşteri seçim yaptıkça bir toplam gösterir; ama siparişe yazılan sayı hiçbir zaman o toplam değildir — bkz. “Fiyatlar nerede duruyor”.
- [mevvatelier_tanitim]
- Ana sayfanız için bir tanıtım bandı — bir başlık, kısa bir metin ve sipariş formuna giden bir düğme. Bir ek kimliği alır:
[mevvatelier_tanitim gorsel="123"]. - [mevvatelier_gorsel]
- Ortam kitaplığınızdaki bir görseli, WordPress’in zaten ürettiği duyarlı boyutlarla basar:
[mevvatelier_gorsel id="123" size="large"]. Var olma sebebi, bir tanıtım sayfasının telefonda 380 piksellik bir yuvaya 2000 piksellik fotoğraf basmasını önlemek.
Sipariş sayfası kendisi için sayfa önbelleğini kapatır — LiteSpeed, WP Rocket ve W3 Total Cache’in ortak anladığı dilde — ve ayrıca no-store başlıkları gönderir. Önbelleğe alınmış bir sipariş formu bayat bir jetonla gönderir ve sessizce başarısız olur; müşterinin gözünde bu, hiçbir şey yapmayan bir form demektir.
Fiyatlar nerede duruyor
Bir siparişin fiyatı sunucunuzda, yalnızca müşterinin seçiminden hesaplanır. Tarayıcının gönderdiği toplam doğrudan yok sayılır — ne kadar tahsil edileceğini tarayıcıya sormak, mağazayı bedavaya soydurmanın en kısa yoludur. Para ondalık olarak değil, tam sayı kuruş olarak tutulur; böylece uzun bir sipariş faturayla sipariş arasında bir birim bile kayamaz.
Bunları Atölye → Ayarlar altında, lira olarak, kuruş için virgülle düzenlersin. Her paketin desteklenen her kişi sayısı için — birden altıya — bir fiyatı olmalı. Tablo hiçbir şey yazılmadan önce bütün olarak doğrulanır; bir alan okunamazsa ekran hangisi olduğunu söyler ve hiçbirini yazmaz. Yarısı yazılmış bir fiyat tablosu, tam müşteri sipariş verirken patlayan tablodur.
Tıklamak yerine WP-CLI ile dağıtmayı tercih ediyorsan hepsi tek bir seçenekte duruyor: mevvatelier_pricing. Eklenti yazdıktan sonra seçeneği geri okur ve okuduğu yazdığıyla aynı değilse başarı bildirmeyi reddeder — çünkü kalıcı nesne önbelleği olan bir mağazaya “kaydedildi” denip eski fiyattan satmaya devam ettirilebilir.
wp eval '
$t = MevvAtelier_Settings::pricing_table();
$t["labels"]["orta"] = "Orta boy kolye ucu";
$t["packages"]["orta"][1] = MevvAtelier_Pricing::parse_money( "1.290,50" );
$t["default_package"] = "orta";
var_dump( MevvAtelier_Settings::save_pricing_table( $t ) );
'
İç paket anahtarları anahtarlik, orta, buyuk, anahtarlik_orta ve uclu_set; ek seçenek anahtarları paint_kit ve rush. Kodun ve mevcut siparişlerinin başvurduğu bunlardır, o yüzden hiç değişmezler — müşterinin gördüğü ad ayrı bir alandır ve istediğin zaman yeniden yazabilirsin.
Atölye kuyruğu
Atölye, mağaza siparişlerini düzenleyebilen herkes için yönetim menüsünde görünür. Açık siparişleri en eskiden başlayarak listeler ve söz verilen süreyi geçenleri kırmızıya boyar — normalde yirmi dört saat, acil siparişte altı. Cevapladığı soru “ne açık” değil “ne geciktı”; ekrana koymaya değen tek soru da o.
Operatör önizlemeyi aynı satırdan yükler. Yükleme dosyayı kasaya koyar, tam olarak neyin gösterildiğinin özetini kaydeder, siparişi Müşteri onayında durumuna alır ve müşteriye e-posta gönderir — hatırlanacak dört şey değil, tek bir işlem.
- Model bekliyor
wc-mevv-model. Fotoğraflar alındı, model hazırlanıyor. Müşterinin bağlantısı çalışır ve ona tam olarak bunu söyler.- Müşteri onayında
wc-mevv-onay. Önizleme gönderildi. Müşteri onaylayabilir ya da kaç kere gerekirse düzeltme isteyebilir.- Baskıda
wc-mevv-baski. Onaylandı ve üretimde. Revizyon formu ekrandan kalkar; üstelik yalnız ekran değil, sunucu da bu noktada revizyon isteğini reddeder.
Hangi durumun hangisini izleyebileceği, yasaklar listesi olarak değil izinler listesi olarak yazılmıştır. Kimsenin aklına gelmemiş bir adım sessizce izne dönüşmek yerine varsayılan olarak reddedilir; durum makinesiyle temenni arasındaki fark budur.
Müşteri ne görüyor
E-postayla gönderilen, altmış gün çalışan ve hesap gerektirmeyen tek bir bağlantı. Birinden kendi önizlemesine bakabilmek için üye olmasını istemek, o onayı kaybetmenin en kestirme yoludur; bu yüzden bağlantı yetkisini kendisi taşır: imzalıdır, tek bir siparişi adlandırır ve kurcalanmış olanı hiçbir şey açmaz.
Sayfa her durum için farklı bir ekran gösterir ve hiçbir zaman önbelleğe alınmaz — önbelleğe alınmış bir onay sayfası bir müşterinin önizlemesini sonraki ziyaretçiye gösterirdi. Onay bağlantısı her e-postada iki kez geçer, düğme olarak ve düz metin olarak; çünkü düğmeyi çizmeyen e-posta istemcileri var.
- Sipariş alındı — sipariş verildiğinde, bağlantıyla birlikte gider.
- Önizleme hazır — operatör yüklediğinde gider. Karar isteyen e-posta budur.
- Onay kaydedildi — müşteri onayladığında gider ve üretimin başladığını açıkça söyler.
- Kargoya verildi — operatör siparişi tamamladı olarak işaretlediğinde gider.
E-postalar mağazanızın kendi WooCommerce şablonundan geçirilir; böylece sonradan eklenmiş bir şeye değil, mağazanızın diğer postalarına benzerler.
Fotoğraflar
Yüklemeler, uploads klasörünüzün altında adı tahmin edilemeyen bir dizine gider ve aynı anda dört katmanla korunur: bir .htaccess kuralı, IIS için bir web.config, bir index.php ve siteden başkasının okumasına izin vermeyen dosya izinleri. Dört, çünkü bunlardan herhangi biri birinin sunucusunda ya yoktur ya da yok sayılır.
Bir dosya, adının iddia ettiğine göre değil, baytlarının ne olduğuna göre kabul edilir. .jpg diye yeniden adlandırılmış bir çalıştırılabilir dosya kapıda geri çevrilir — uzantıya bakmak, saldırganın kendi beyanına bakmaktır. Kabul edilen türler JPEG, PNG, WebP ve HEIC. Saklanan ad rastgeledir; müşterinin özgün dosya adı dosya sistemine hiç ulaşmaz, çünkü “ayse-dogum-gunu.jpg” bir çocuğun adı ve bir tarihtir.
Her fotoğraf ve her önizleme tek bir geçitten servis edilir. Ekibiniz WooCommerce sipariş yetkisiyle, müşteri ise o siparişe karşı doğrulanan imzalı bağlantıyla geçer. Bir sipariş için üretilmiş bağlantı başka bir siparişin dosyasını açamaz. Dosyalara hiçbir zaman herkese açık bir adres verilmez.
- Saklama süresi
- Günlük bir görev, tamamlanmış siparişlerin yüklemelerini ve önizlemelerini sizin belirlediğiniz süreden sonra siler — kutudan çıktığı hâliyle altmış gün,
mevvatelier_retention_daysseçeneğinde durur. Sipariş, tutarı ve onay kaydı kalır; fotoğraf kalmaz. - Sunucunuzdan çıkan şeyler
- Bu eklentiden hiçbir şey. Sipariş hattından bize ne fotoğraf, ne önizleme, ne sipariş, ne telemetri, ne de lisans çağrısı ulaşır. Kasa sizin diskinizde bir dizindir, onay kaydı da kendi sipariş verinizdir.
Bir çocuğun fotoğrafını mağaza sunucusunda süresiz tutmak bir özellik değil, bir yükümlülüktür. Müşterilerinize verdiğiniz saklama sözü altmış günden farklıysa seçeneği söylediğinize uyacak şekilde değiştirin — sayfanızdaki sayı ile eklentideki sayı aynı sayı olmalı.
Onay, iptal ve cayma hakkı
Mesafeli Sözleşmeler Yönetmeliği m.15/1-(b) uyarınca, tüketicinin kendi istekleri doğrultusunda hazırlanan bir mal üretildikten sonra cayma hakkı taşımaz. MevvAtelier bunun etrafına kurulmuştur: müşteriye onay ekranında bu söylenir ve kabul ettiği an onayla birlikte siparişe yazılır.
Onaydan önce hiçbir şey üretilmemiştir; iptal size bir model kaybettirir, malzeme kaybettirmez — siparişi WooCommerce’ta iptal edip her siparişte olduğu gibi iade edin. Onaydan sonra revizyon formu kalkar ve sunucu revizyon isteğini reddeder, çünkü o noktada malzeme taahhüt edilmiştir.
Bu, eklentinin neyi kaydettiğini anlatır; hukuki tavsiye değildir. Kendi mesafeli satış sözleşmeniz ve ön bilgilendirme formunuz da aynı şeyi söylemek zorunda; o kısmın eklentisi MevvLegal.
Sorun giderme
- Sipariş formu gönderiliyor ama bir şey olmuyor
- Neredeyse her zaman sayfanın önbelleğe alınmış bir kopyası. Form tek kullanımlık bir jeton taşır; önbelleğe alınmış sayfa bayat bir jeton dağıtır ve o sessizce reddedilir. Sayfayı önbellekten temizleyin ve eklentinin no-store başlıklarının tarayıcıya ulaştığını doğrulayın — bazı CDN’ler bunları uçta kırpıyor.
- Müşteri bağlantının çalışmadığını söylüyor
- Üç sebep var ve sayfa hangisi olduğunu söylüyor. Altmış günü geçtiyse süresi dolmuştur, yenisini gönderirsiniz. E-postadan elle kopyalandıysa genellikle bir karakter eksiktir. Başka bir siparişi adlandırıyorsa başka bir e-postadan iletilmiştir.
- Yönetimde fotoğraflar kırık görsel olarak geliyor
- Kasa geçitten geçirilmek yerine doğrudan servis ediliyor — kasa dizininin hâlâ
.htaccessveindex.phpdosyalarını taşıdığını ve barındırıcınızın izinleri sıfırlamadığını denetleyin. Dosyalara adresten ulaşılabiliyorsa sorunun asıl acil yarısı odur. - Fotoğraf olduğu hâlde yükleme reddediliyor
- Dosya JPEG, PNG, WebP ya da HEIC dışında bir şey olarak okunuyor. Telefon ekran görüntüleri ve tasarım araçlarının dışa aktardığı görseller çoğu zaman bunlardan biri değildir; JPEG olarak yeniden kaydetmek meseleyi çözer. Denetlenen şey uzantı değildir.
- Siparişler “Model bekliyor” durumundan çıkmıyor
- Onları kendiliğinden ilerleten bir şey yok — önizlemeyi bir operatör yükler. Ekibinizden biri için kuyruk ekranı boşsa, mağaza siparişi düzenleme yetkisinin olup olmadığına bakın; ekran yöneticilik değil, o yetki üzerinden açılıyor.
- Eski fotoğraflar hâlâ diskte
- Saklama görevi WP-Cron üzerinde koşar; o da yalnız siteye biri girdiğinde tetiklenir. Sessiz bir mağazada trafiği bekler — ya da gerçek bir sunucu cron’unu ona yöneltin. Ayrıca söz konusu siparişlerin gerçekten tamamlanmış olduğunu denetleyin; açık siparişler hiçbir zaman silinmez.
- Formdaki fiyatlar benim belirlediklerim değil
- Kayıtlı tablonuz doğrulamadan geçemedi ve eklenti yanlış fiyatla satmaktansa varsayılanlarına döndü. Bunu söyleyen bir yönetici uyarısı var. Her paketin birden altıya kadar her kişi sayısı olmalı ve her tutar kuruş cinsinden negatif olmayan bir tam sayı olmalı.
Bize yazarken WordPress, WooCommerce, PHP ve eklenti sürümlerini, sipariş numarasını ve dört e-postadan hangisinin gelip hangisinin gelmediğini gönderin. Müşterinin fotoğraflarını göndermeyin.