Premium WordPress eklentimiz için tam besteci desteği nasıl oluştururuz
Besteci bulmacaların hepsi WordPress Packagist’te bulunan ücretsiz eklentiler için iyi ve havalı, ama prim ne olacak? Uzun bir süre için premium eklentilerimizin besteci üzerinden yüklenmesine izin veriyoruz, bir ana uyarı ile: yalnızca her eklentinin en son sürümü yüklenebilir. Composer.json dosyanızda hangi sürümü belirtirseniz belirtin, her zaman en son indirecektir. Mevcut yaklaşımla ilgili bir başka sorun, composer.json dosyanızın bir lisans anahtarına bağlı olmasıdır (bazen WP Migrate DB Pro ve WP boşaltma S3 kullanıyorsanız bazı anahtarlar). Yüzeyde, bu büyük bir sorun gibi görünmeyebilir, ancak yakın zamanda bestecinize erişimi olan ve ayrıldıysanız, yakın zamanda bir serbest geliştiriciyle çalışıyorsanız? Artık lisans anahtarınız var, yani ödediğiniz yazılıma erişmeye devam edebilecekleri anlamına geliyor. Hiç hoş değil!
Teknik olarak sağladığımız çözüm, eklentimizi bir besteci üzerinden yüklemenize izin verse de, en iyi yarı pişmiş çözümdür. Ancak, çoğu premium eklenti mağazası tarafından sağlananlardan daha iyidir. Çoğu besteciyi hiç desteklemez. Yapmayanlar için, her eklenti için her siteyi girmeli, zip indirmeli, zip açmalı, eklenti klasörünü değiştirmeli ve dosyaları GIT’e iletmeliyiz. İdeal değil, ama işi tamamlamak. Tam Besteci Destek Tanıtımı Bugünden itibaren, eklentimiz için tam besteci desteği sunduğumuzu duyurmaktan mutluluk duyuyorum. 🎉. Bu, sürüm sınırını kullanarak eklentimizin eski sürümünü yükleme yeteneğini içerir. Ayrıca, besteci yangın kilidinin tanınması yoluyla lisans kilidini composer.json dosyasından tamamen ayırdık. Ayrıldığınız freelancer’ı hatırlıyor musunuz? Şimdi sadece besteci yangın kilidi silin ve artık yazılım indirmelerinize erişemiyorlar. Yeni iş akışına bakalım. Bestecimizin kullanımı, hesabıma besteci yangın anahtarınızı yönetebileceğiniz yeni bir ayar sekmesi ekledi. Bir dizi anahtar eklenebilir. Konfor olarak da etiketleyebilirsiniz.
Besteci Ateş Anahtarı bireysel lisanslarla bağlantılı değildir. Her anahtar, aktif bir aboneliğiniz olduğu tüm ürünlerimize erişim sağlayacaktır. Bu, ekleyebileceğimiz gelecekteki ürünleri içerir, bu nedenle yeni bir eklenti satın alırsanız veya mevcut lisansları artırmanız gerekmez. 😉. Bir yangın anahtarınız olduktan sonra, depo kaynağımızı composer.json dosyanıza ekleyebilirsiniz: “depolar”: [{“type”: “besteci”, “url”: “https:” https: “https:” com/ {composer_api_key} “}] Daha sonra istediğiniz sürümün paketini ve sınırını ekleyebilirsiniz. Bir eklentinin en son sürümünü her zaman kullandığınızdan emin olmak için “*” “*” i bir paket sürümü olarak kullanabilirsiniz. Deliciousbrains-Plugin /WP-Migrate-DB-Pro-Media “:” 1.4.9 “,” Deliciousbrains-plugin /wp-offload-s3 “:”*”}} Besteci kurulumunu çalıştırmak size tüm tahtalarda yeşil verecektir! Eklenti dosyası otomatik olarak wp-content/eklentilerine yüklenir, ancak gerekirse konumu ayarlayabilirsiniz. Daha fazla ayrıntı için WP Migrate DB Pro ve WP boşaltma S3 belgelerine bakın. Nasıl inşa ederiz Mayıs 2017’de tam besteci desteği eklemeye ve GitHub sorunları yaratmaya karar verdik. Evan besteci uzmanımız, bu yüzden proje gereksinimlerini özetliyor.
Fikir, wpackagist.org kullanırken kullanıcıya zaten aşina olan iş akışını taklit etmektir, tek fark, besteci depo URL’sine eklenen benzersiz anahtardır. En kısa sürede, Brad GitHub problemine kullanıcı arayüzü için bir maket ekledi, ancak sitenin yeniden tasarımı başlatılana kadar uygulamayı ertelemeye karar verdik. Bunun nedeni, hesabımda gerekli olan ve eski ve yeni temalar için yapılması gereken değişikliklerin olmasıdır. Peki, gereksinimler nelerdir? Package.json, bestecinin paketin keşfini yapabilmesi için yeni bitiş noktası /packages.json gereklidir. Https://composer.deliciousbrains.com/ {composer_api_key }/packages.json seçtik, ancak mevcut api.rewrite ^/([a -zo-z0-9]+) işaret etmek için bu son noktayı yeniden yazıyoruz. /packages.json$ /? wc-api = lezzetli beyinler & istek = composer_packages & composer_key = son 1 $; Bu bitiş noktasının, mevcut her sürüm dışında depomuzun sorumluluğunda olan paketlerin bir listesini aşağıdaki formatta sağlaması gerekir: {“paketler”: {“satıcı/paket adı”: {“1.0.0”: { @composer.json}, “1.0.1”: { @composer.json}, “1.0.2”: { @composer.json}}}} Bu bize bir sorun verir. Bu meta verileri üretmemiz için, eklentimizin yıllardır yayınladığımız her sürümünü bilmemiz gerekiyor, bu da veritabanına kaydettiğimiz bir şey değil. WordPress’teki ürün yayınlarımızın türleri yalnızca indirilebilecek mevcut sürümü kaydeder.
Neyse ki, tüm ürün indirmelerimizi piyasaya sürülen tüm sürümleri içeren bir S3 kovasına kaydediyoruz. Ayrıca standart yollarla da adlandırılır, örneğin: WP-Migrate-DB-PRO-1.0.zip. Sitede WP boşaltma S3 kullandığımız için, nesnelerin bir listesini oluşturmak ve sürümünü çıkarmak için paketlenmiş AWS SDK’yı kullanabiliriz. Ürünü WordPress’te her güncellediğimizde, ancak yalnızca ürün sürümü değiştiğinde bu aramayı yapıyoruz. Bu veriler daha sonra Redis’te önbellek olan seçenek tablosuna saklanır. $ objects = $ as3cf-> get_s3client ()-> listObjects ([‘kova’ => ‘downloads.deliansbrains.com’, ‘önek’ => ‘wp’,])-> getPath (‘içerik/*/key’ ); $ eklentileri = array (); foreach ($ object olarak $ object) {$ file = self :: get_name_and_version ($ object); if (! $ dosya) {devam; } $ eklentileri [$ file [‘name’]] [] = $ file [‘sürüm’]; } Package.json formatına geri dönersek, her packages.json’un { @composer.json} değerine sahip olduğunu göreceksiniz. Bu, her composer.json eklenti dosyasında bulunan bilgiler olmalı, ancak eklentilerimizi bir tane göndermiyoruz. Bunun yerine, bunu her paket için dinamik olarak üretiyoruz.
Array (‘name’ => $ name, ‘sürüm’ => $ sürüm, ‘type’ => ‘wordpress-plugin’, ‘distal’ => dizi (‘url’ => self :: get_download_url ($ eklenti, $ sürüm, $ composer_key), ‘type’ => ‘zip’,), ‘worring’ => dizi (‘besteci/yükleyiciler’ => ‘~ 1.0’,); Bu çoğunlukla açık. URL anahtarı, zip paketinin indirilebileceği yangımızdaki (aşağıya bakınız) başka bir bitiş noktasına işaret eder. Gereken türler ve bloklar, bu paketler için kurulum yerini belirlememizi sağlayan şeydir. Varsayılan olarak, /satıcıya yüklenirler, ancak bir besteci /yükleyici kullanmak, Pack.json’umuzun bitiş noktasında bulunur. Burası, verilen besteci yangın anahtarı için paketin gerçekten erişilebileceğini doğrularız. Anahtar, istenen paket için etkin bir aboneliğe sahip kullanıcıya eklenirse, indirme başlayacaktır. Değilse, besteci başarısız olur ve ilgili hatalar görüntülenir.