Gelişmiş WordPress’in Geliştirilmesi: Nesne Yönlendirilmiş Eklentiler Yazma

WordPress geliştiricisiyseniz nesne yönelimli programlamayı incelemenin birçok faydası vardır. OOP kodu, kodunuzu ayarlamaya yardımcı olabilir ve tekrar kullanılabilir. Bu daha genişletilmiş, bakımı daha kolaydır ve kültürü tasarım kalıplarını kullanmaya teşvik eder. Bu, gelişmiş geliştiriciler için WordPress’e odaklanan altı bölümümüzdeki ikinci gönderi. Bu seri, temanın ayrıntılı olarak geliştirilmesi, temaları hazır hale getirme, yapı eklentileri, türleri ve özel yayınların, sorguların ve döngülerin taksonomisi de dahil olmak üzere birkaç ilginç kodlama konusunu tanıtan orta kullanıcılar için popüler WordPress’imizin geliştirilmesinden geliyor. , özel alanlar ve meta veriler ve yerelleştirme.
Geçen hafta OOP’un temelini gördük. Bu öğreticide, nesne yönelimli programlama teknikleri hakkında yeni bilgilerinizle bir eklenti oluşturmaya başlayacaksınız. Nesne yaklaşımının temellerini kullanarak kodda yapısal değişiklikler yapmak için yalnızca kullanmaya başlayacağız. Eklentiler ve temalardaki üçüncü taraf kodu, OOP kullanan platformla karşılaştırıldığında “Kovboy” olarak da bilinen birçok “spagetti” kullanır. Bu yazıyı okumayı bitirdiğinizde, umarım OOP’yi denemek ve kodunuzu temizlemek için ilham alacaksınız!
Sıkışalım. Not: PHP hakkında bilgi sahibi olmanız önemlidir, çünkü bu, geliştiricilere yönelik sürekli konuları içeren bu serinin WordPress’in temel dilidir. Bu dizi boyunca kod görüntülerine başvuracağım. Özellikle bu öğretici için, bir eklenti nasıl yapılacağı hakkında temel bilgiye sahip olmanız da önemlidir. Yardıma mı ihtiyacınız var? Bkz. WordPress eklentilerinin geliştirilmesiyle başlayın: Ana Kılavuz. Yazma Nesnesi Yönlendirilmiş Eklenti: Proje Bu dersin amaçları için, tek yazı içeriğimizden sonra bir abonelik formu ekleyecek bir eklenti oluşturalım. Abonelik formu verileri doğrudan MailChimp’e gönderecektir. Bu, prosedürel bir kodla kolayca yapılabilen ancak OOP yaklaşımı isteyen basit bir konudur. Bu, uzantının kolayca görüldüğü bir projedir. Diğer yerlere form ekleyebilir, Madmimi gibi diğer yangınlarla çalışmak veya hatta yerel veritabanlarına veri eklemek için uygulayabilirsiniz. Bunun ne kadar kolay olduğunu göreceksiniz. Kod Prosedürü Önce tam prosedür kodu bakalım, ne olduğunu anlayalım ve ardından OOP harikalarını eklemek için biraz yeniden yapılandırma yapalım.
Çekirdek yükleme CB790E16C4AAE22F91E32407C4DCD9C7
Yapmamız gereken iki şey var: ön uçta bir form oluşturun ve MailChimp’e girilen verileri gönderin. Msf_post_form () işlevi birincisini işler. The_Concent’e bağlıdır ve içeriği tek bir sayfada değilmiş gibi geri yükler.
Değilse, admin-ajax.php dosyasına gönderilen bir form yaparız. Forma iki güvenlik öğesi ekledim. En belirgin olanı nonce alanıdır, daha kurnaz olan, metin adı Honeypot’un metnidir. Bu alan kullanılmaz ve CSS boyunca gizlenmez. Botu doldurmak için büyütmek için ona kasıtlı olarak (“Honeypot” un aksine) kullanılan bir isim verdim. Msf_assets () işlevi bizim için stil sayfası ekler. Bu işlevde kaydettiğimi ancak msf_post_form () ‘da msf_post_form () olduğumu unutmayın. Bu, yalnızca gerektiğinde yüklenmesini sağlar. Son olarak, MSF_FORM_SUBMIT ()> işlevi, nakliye işleminden sorumludur. Nonpe ve Honeypot doğrulandıktan sonra, gerekli verilere uygun olarak konuma uzun mesafe sonrası istekleri göndeririz. Daha fazla bilgi için API MailChimp belgesine bakın. Yapabileceğimiz bazı ek sınavlar var (yapmalıyız) ama bu bu öğreticinin ana odağı değil, bu yüzden buraya ekleyeceğim.
E -posta sunucusu tarafını da kontrol edin
URL’deki sunucuyu (US6) API tuşundaki sunucu ile eşleştirin
Yirmi on beş temaya göre form oluşturmak için bazı temel stiller ekledim.
Çekirdek yükleme CB790E16C4AAE22F91E32407C4DCD9C7
Abonelik formu
Bu kodun potansiyel komplikasyonları şimdilik iyidir, ancak özellikler eklemeye çalıştığınızda, bu kod hızla çok daha karmaşık hale gelir. Birçok listeyi nasıl ele alıyorsunuz? Aynı formu sitenin başka bir bölümüne eklemeye ne dersiniz? Posta listesi sağlayıcıları arasında hızlı bir şekilde geçiş yapmak istiyorsanız ne olur? Kodunuzdaki birçok ifadeyle sonuçlanacaksınız, bu nedenle yapmanız gereken bazı uzun işlev adlarından bahsetmemek için takip edilmesi zor ve bakımı zor. Ayrıca, kodun kalitesine zarar vermek için tüm eylemlerimizi her yere yerleştirmenin de buldum. Bu sorunların bazılarını OOP’umuz hakkındaki temel bilgimizle çözelim. OOP göz önünde bulundurularak yeniden yazalım, başlangıçtan itibaren yeniden yazalım ve gerektiğinde mevcut kodu kopyalayalım. Çoğu proje için, tam işlevselliği özetleyen bir sarma sınıfı yapmayı seviyorum. İşte temel bir çerçeve.

Çekirdek yükleme CB790E16C4AAE22F91E32407C4DCD9C7
Yapılandırma dizisini yeni bir nesneye devam ettirdim. Bu, gerekirse farklı ortamlar için çeşitli şeyleri yönetmeyi kolaylaştıracaktır. Diziyi değiştirebilirim ve sınıf, WordPress için wp-config.php’nin çalışmalarına benzer bilgileri benzer şekilde kullanacaktır. Yapıcı işlevi, sınıf yapıldıktan hemen sonra çalışır, bu da tüm eylemlerimizi ve filtrelerimizi koymak için bir yer olduğu anlamına gelir:
Çekirdek yükleme CB790E16C4AAE22F91E32407C4DCD9C7
Bu yapının çok daha iyi olduğunu gördüm çünkü kendim daha fazla belgelenmişti. Sınıfın WordPress’e bağlı olduğu tüm noktaları tek bir yerde görebilirsiniz. Sınıfınızdaki kancaları kullandığınızda, işlevin adını belirleyemeyeceğinizi unutmayın, Dizi Sözleşmesini ($ this, ‘name_of_function’) kullanmanız gerektiğini unutmayın. Bunun nedeni, kastettiğimiz işlevin küresel alanda değil, sınıfta olmasıdır. Ayrıca fonksiyonların önekini sildim ve amacının sağlanması daha kolay olacak şekilde adını basitleştirdim. Geriye kalan tek şey bu işlevleri sınıfın gövdesine koymak. Değişiklikleri göreceğiniz iki yer, işlevin adı (basitleştirilmiş) ve şimdi $ fire_key özelliğinden alınan API anahtarının kullanımıdır. Tam OOP kodu aşağıdadır:
Çekirdek yükleme CB790E16C4AAE22F91E32407C4DCD9C7
Kodun şimdi anlaşılması çok daha kolay, daha iyi yapılandırılmış ve daha genişletilmiş. Temel Uzatma Kodumuzu genişletmek için yapabileceğimiz birçok şey var. İki yöne odaklanalım: form alanlarını kontrol edin ve diğer sağlayıcılar ekleyin. Saha alanı ihtiyaçlarımıza bağlıdır, birkaç alan daha olabilir. Değişikliğe her ihtiyaç duyduğumuzda sert bir şekilde kodlayabiliriz, ancak böyle şeyleri kontrol etmek için kancaları kullanmayı tercih ederim. Çalışmanızı halka açıklamasanız bile, çeşitli projelerde kendiniz kullanabileceğinizi unutmayın. Kolaylaştırma Uzantısı, iş yükünüzü zaman içinde azaltmak için bir yatırımdır.
Başlamak için, isteğe bağlı bileşenlerin tüm formlarını ayıracağım. Burası kısa bir tartışma için iyi bir yer! E -posta alanının başvurunuz için bir zorunluluk veya isteğe bağlı olduğunu düşünüyor musunuz? İyi gidebilir. Bu uygulamayı alıcıların listesini değiştirmek için her zaman kullanacaksanız, zor bir kod yapmak iyi bir karar olabilir. Bülteni değiştirmek için genişletebilirseniz, yeni bir liste yapın – bir e -posta adresinin gerekli olmadığı bir işlem – bunu bir seçenek olarak düşünmelisiniz. Bu örneğin amaçları doğrultusunda, isteğe bağlı olarak değerlendireceğim, ancak varsayılanı içerir. Bu, yukarıdakileri hatırlayarak Form () yönteminin değiştirilmesinin yöntemidir: CB790E16C4AAE22F91E32407C4DCD9C7’nin çekirdeğini içerir
HTML alan dizilerini tutan bir $ Varsayılan değişken yaptım. Varsayılan olarak uygulamak istediğim tek şey e -posta, bu yüzden ekledim. Varsayılan diziye bir filtre uygulayarak onu takip ettim. Filtre, gerektiği kadar alan ekleyerek işlevselliği kolayca genişletmemi sağlar. “Yaş” alanını eklemek için, filtreyi kendi eklentinizden veya diğerinizden kullanın. Diğer eklentilerin yaş alanını eklemek için şöyle bir şey yapabilirsiniz:

Çekirdek yükleme CB790E16C4AAE22F91E32407C4DCD9C7
Diğer sağlayıcıların eklenmesi Uygulamaların uzatmaya hazır başka bir yönü sağlayıcılardır. MailChimp, Madmimi veya diğer e -posta listesi sağlayıcıları arasında seçim yapma yeteneği olağanüstü olacak, hadi başlayalım. Ifment işleyişini kullanmak yerine, nakliye beyanımızın yapılması çok uzun süredir doğru teslimat işlemini başlatan ayrı bir işlev kullanın. Yapılandırma dizimizi yeniden yazarak başlayalım: CB790E16C4AAE22F91E32407C4DCD9C7’nin çekirdeğini içerir
Bu düzenlemeyi görünce şöyle düşünebilirsiniz: “Bu neden bu kadar karmaşık? Sağlayıcının dizisi yalnızca anahtarın sağlayıcı olduğu ve değerin yangının anahtarı olduğu anahtar değer çiftlerinin bir listesi olamaz mı? ” Cevap: Elbette yapabilirsiniz! Daha derin bir seviyeye gitmeyi seçmemin nedeni ileride düşünmekti. Yangının çoğu buna ihtiyaç duyarken buraya kimlik doğrulamaya girmedik. Bu, her bir sağlayıcı için en az iki bilgiye ihtiyacımız olacağı anlamına gelir. Ayrıca, bu satıra temel URL’ler ve diğer bilgiler ekleyerek yangın çağrısını daha sonra kolaylaştırmak isteyebiliriz. Şimdi yeni sağlayıcımızın dizisiyle çalışmak için kodumuzu biraz yeniden yazmamız gerekiyor. Önde düşünmeye çalıştığımız için, gelecekteki değişikliklerin büyük olasılıkla mevcut kodda değişiklikler gerektirmeyeceğidir. Şimdi yapılandırma dizimizin farklı bir yapısı var, yapıcıyı güncellememiz gerekiyor. API_KEY özelliği yerine, kullandığımız her sağlayıcıdan bilgi içerecek sağlayıcılar kullanacağım.
Çekirdek yükleme CB790E16C4AAE22F91E32407C4DCD9C7
Ardından, SubmissionHandler () adını MailChimPhandler () olarak değiştirelim ve yeni sağlayıcılar mülkümüzdeki yangın anahtarını ifade ettiğinden emin olalım. Değişiklikler wp_remote_post () işlevinde görülebilir, aşağıya bakınız: Core CB790E16C4AE22F91E32407C4DCD9C7 içerir
Son olarak, doğru işleyiciyi doğru zamanda başlatmamız gerekiyor. Bunu yapmak için, kullanmak istediğimiz işleyici de dahil olmak üzere son kez yapılandırma düzenlememizi değiştirelim.
Çekirdek yükleme CB790E16C4AAE22F91E32407C4DCD9C7
Ayrıca, bunları kurucuya ayarlayarak sınıfımızdaki mülke sağlayıcılar ekleyeceğim:
Çekirdek yükleme CB790E16C4AAE22F91E32407C4DCD9C7
Birisi bir form gönderdiğinde, SubmissionHandler’ın işlevi hala çağrılır, ancak daha fazlası yoktur, çünkü bunu MailChimphandler olarak adlandırdık. Şimdi nakliye işlem işlevini yeniden yapalım:
Çekirdek yükleme CB790E16C4AAE22F91E32407C4DCD9C7
Teslimat işleyicimiz, işlemlerin işleme yöntemleri olup olmadığını kontrol eder. “İşleyici” ile eklenen sağlayıcının adını arıyordu. Yöntem bulunmazsa, bir bildirim görüntüler. Değilse, yöntemi yürütür. Komple kod çok fazla değişiklik yaptığımız için, aşağıdaki eklenti için tam bir kod yayınladım. Aşağıdaki kodu kopyalamamaya çalışın; Bunun yerine modifikasyon kullanarak oraya varmak, neler olduğunu daha iyi anlamanızı sağlayacaktır.
Çekirdek yükleme CB790E16C4AAE22F91E32407C4DCD9C7
OOP ile çalışan son kelimelerin alışmak için zamana ihtiyacı var, ancak para düştüğünde, onu kullanmada akıcı olacaksınız!İlk seyahatimde bununla mücadele ettim, bu yüzden ses tıklamadan önce birkaç geçişe ihtiyacınız varsa cesaret kırılmayın.Son olarak, kodu daha iyi hale getirmek için kullanabileceğiniz çok sayıda olası ekleme ve daha iyi OOP uygulamaları vardır.Şimdiye kadar tartıştığımız materyalde yetkin hissediyorsanız, üçüncü taraf hizmetleriyle daha modüler entegrasyon eklemek için kullanabileceğiniz arayüzü görmenizi öneririm. Bu öğreticinin yararlı olduğunu düşünüyor musunuz?Neden WordPress gelişimini öğrenmek istiyorsunuz?Daha fazla bilmek istiyorsun?Bize aşağıdaki yorumlarda anlatın.
Etiket:
kodlamak

admin

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir