WordPress eklentileri baştan yazmak: Step-Demi-Adım Eğitimi

Bu WordPress Eklentisi Geliştirme Eğitimi, yaptığım hatalar ve onu nasıl gösterdiğim de dahil olmak üzere gerçek projelere geçtiğim adımları yakalar. Bu haftanın makalesi, en başından itibaren bir WordPress eklentisinin nasıl yapılacağını gösteriyor. Size sadece tamamlanan kodu göstermek yerine, WordPress eklentisi geliştirme eğitimini adım adım yazdım, yaptığım hatalar ve nasıl yaptığım da dahil olmak üzere gerçek eklenti projesinden geçtiğim gerçek adımları yakaladım. Bu makale, WordPress geliştiricilerinin en başından itibaren sadece özelliklerin ihtiyaçlarından başlayarak gerçek süreci hakkında bilgi vermek için tasarlanmıştır. Başka bir geliştirici süreci benden farklı olacak: Aşağıda göreceğiniz şeylerin çoğu, son kodda mutlaka görmediğiniz eklenti geliştirme sürecine kendi yaklaşımım.
Hatalar da dahil olmak üzere gerçek adım adım eklentinin geliştirilmesi için okumaya devam edin ve genel olarak WordPress eklentisini geliştirme sürecini düşünmenin sonuçlarına bakın. WordPress Eklentilerinin Geliştirilmesi: Özelliklerin ihtiyaçlarından başlayarak “WordPress eklentisini baştan yazın” aslında “WordPress yapmak istediğiniz kodu ekleyin” anlamına geldiğini unutmayın, bu yüzden öğrenmeniz gereken bir dizi işlemdir. “WordPress eklentilerini başlangıçtan yazmak” aslında “WordPress yapmak istediğiniz kodu eklemek” anlamına geldiğini hatırlamak önemlidir: tamamen yazdığınız,% 100’ün özelliklerin ihtiyaçlarına bağlıdır.
Sonuç olarak, “WordPress eklentisi yazmanın yolları” nın tek bir cevabı yoktur, tıpkı “Yemek Nasıl Pişirilir” ün tek bir cevabı olduğu gibi. (Ne istiyorsunuz?) Aksine, öğrenebileceğiniz şey, süreci öğreten bir örnek olarak özel bir eklenti kullanarak eklentiler geliştirme sürecidir. Bu eklenti geliştirme projesi için özelliklere duyulan ihtiyaçları açıklayın, WPSOT üzerindeki dahili muhasebemiz için gerçekten yararlı olacak bir şey seçiyorum. İşte özelliklerin ihtiyaçları: “Bu takvim ayında WPSOT’da şimdiye kadar yayınlanan (herhangi bir yazı türünden) bana ne yayınladığımı ve yazarın kim olduğunu söyleyecek bir eklentiye ihtiyacım var.” Bir sitenin eklentisi (“Bir sitenin eklentisi ( yayınlanmamış) Önemli Notlar: Bu eklentiyi yalnızca bir site için yazmıştır. Başka bir deyişle, bu, WordPress eklentisi deposunda potansiyele sahip binlerce kullanıcı için ne yayınlayacağınızı değil, WordPress serbest çalışanları tarafından yazılacak bir eklenti türüdür. Bu eklenti yalnızca bir kullanıcı için olduğundan, daha basit bir şekilde kodlayabilirim – örneğin, eklentiyi yapmak kancalarla genişletilebilir veya karmaşık adlar ve çeviriler gerçekleştirebilir. Son olarak, başlamadan önce: Aşağıdaki eklenti (beklediğiniz gibi) genel olarak PHP bilgisine ve özellikle WordPress PHP kodunun temeline bağlıdır. Bunda daha rahat olmak istiyorsanız, WordPress geliştirme kursumuz yukarı çıkıp çalıştırma öğrenmenin en iyi yoludur.
WordPress geliştirmeyi öğrenmek konusunda ciddi mi? Uyan ve bugün koş
Yukarı ve Çalışmak, “WordPress Gelişimimizi Öğrenmek” tam bir kurs. Şimdi üçüncü baskıda güncellendi ve genişletildi, bu, WordPress’in gelişimini hızlı, akıllı ve kapsamlı bir şekilde öğrenmek isteyen yüzlerce alıcıya yardımcı oluyor. “Bence WordPress’in gelişimini öğrenmek isteyen herkes bu dersi gerektiriyor. Çalışmadan önce bazı WordPress kodlarını öğrenmiştim, ama yönüm yoktu. Kurs videosunu izlemek, açılan bir grup ışık gibidir.

Tema, Fonksiyon ve WordPress’in kendisinin bunun ustalaşması için nasıl çalıştığını belirsiz bir şekilde tanıdım. Her şey çok daha net. Bu kursu dinlemek isteyen herkese tavsiye etmekten mutluluk duyuyorum. ” – Jason Robie, WordPress geliştiricisi

WordPress geliştirme yolculuğunuzda bir sonraki adımı atın!
Uyan ve şimdi koş
Bununla, bu eklentiyi geliştirmek için takip ettiğim adımlara dalalım! WordPress Eklentisi Geliştirme Eğiticileri Aşağıdaki adımlar, her adım için eksiksiz bir kodla takip ettiğim adımlardır.
1. Bir şey yapın <? PHP / ** * Eklenti Adı: WPSHOUT YAZARLIĞI GÖSTER Bu ay * Açıklama: Bunun kim yazdığını gösterin WPP / add_action ('init', 'wspout_do_ting'); İşlev wspout_do_thing () {if (! İsset ($ _get ['wpsdt']): return; Endif; var_dupp ("burada"); ölmek; } Not 1. Adımda bu adım yalnızca WordPress eklentimi dinlemesini sağlamak içindir ve eklentinin ekranda bir şey yazdırmasını sağlayabilirim. Eklentinin kendisini gerçekten kaydeden en üstteki WordPress eklentisi daha fazla Kazan Plakası hakkında bilgi edinmek istiyorsanız, konuyla ilgili hızlı kılavuzumuza bakın. If hile (! İsset ($ _GET ['wpsdt'])): Ne kullanıyorum burada. Yalnızca URL'nin içinde WPSDT ile bir sorgu dizesi varsa eklenti kodunu çalıştırmak için SuperGlobal $ _GET PHP'yi kullanır. Bu hileyi eklentiler geliştirmek için sık sık kullanıyorum, çünkü bu, sadece URL parametresini manuel olarak değiştirerek çalıştırmama izin veren eklentiler için kolay bir "açma/kapama" düğmesi. WordPress'in Init Action Hook'una da bağlı olduğumu unutmayın. Neden? Niye? Çünkü eklentimin diğerlerinden önce yürümesini istiyorum ve bunu düşünmek istemiyorum. Bu yüzden bağımlılık yapan işlevimi wspspout_do_ting () olarak adlandırdım: çünkü bir ad alanı çarpışmasına neden olmayacağını biliyorum (wspout_ çok basit ve işlev adının ayarları oldukça iyi) ve düşünmek istemiyorum BT. Daha sonra iyi yapacağız.
var_dupp (); ölmek; var_dupp (); ölmek; Burada kullandığım desen, WordPress eklentisinin geliştirilmesindeki ekmek ve tereyağımın bir parçası, çünkü bu, eklentinin tam olarak ne yayınlandığını görmemi ve daha sonra çalıştırılmak isteyebilecek diğer PHP işlemlerini kapatmamı sağlıyor. Bunu asla kullanıcıyı etkileyecek şekilde yapmayın, yoksa gerçekten hasar gören bir site göreceklerdir. Yukarıdaki kodun sonuçları, WPSDT sorguları dizesini girdiğimde: 2. 5, ‘Post_type’ => ‘any’, ‘Post_status’ => ‘yayın’, ‘orderby’ => ‘tarih’, ‘sipariş’ => ‘desc’,); $ query = yeni wp_query ($ args); var_dupp ($ sorgu); ölmek; } Not 2. Adımda şimdi özel bir WP_QUERY ve VAR_DUMP () ING sonuçlarını çalıştığından emin olmak için yazıyoruz. Sorgunun kendisi, “Herhangi bir yazı türünden, gönderinin durumu yayınlandı”, istediğimiz şeyin bir parçası (her türlü yazı türü, gönderinin durumu yayınlandı) ve bazıları içindir. İstediğimiz değil (en son beş). Önce kolay bir parça yapıyoruz.
Bu adım aşağıdaki çıktıya yol açar. İyi olan, gönderilerin Var_Dump () ED WP_QUERY nesnesinin beş öğeden oluşan bir satır olmasıdır. WP_Query’nin nasıl çalıştığı hakkında yeterince şey biliyorsanız, yayınların sayısının sorguda gerçekten alınan yayın sayısını yansıttığını bilirsiniz. Başka bir deyişle, gerçekten beş gönderi almayı başardık. Bu ay yayınlanan tüm gönderileri nasıl soracağımı dikkatle nasıl soracağımız, nasıl yapılacağını bilmediğim kısımdayız, bu yüzden bu adımda eklenti kodunu yazmayacağım. Nasıl yapacağımı bilmiyorum: Yalnızca bu takvim ayına göre yayınlanan bir gönderiyi alan bir wp_query nasıl yazılır? (Unutmayın, bu “son 30 gün” değil, 10 Kasım’da “1 ila 10 Kasım” anlamına gelir.)
Kalın: Google’a zaman yazdırdığım WordPress eklentilerinin (ve genel olarak WordPress’in geliştirilmesinin) geliştirilmesinin önemli bir parçası olan Google’a zaman. Google’ı kullandığınızda, iki şey bulmak çok önemlidir:
Google kuyruğunuzu nasıl yazabilirsiniz.

İlgili sonuçlar nasıl seçilir.
Çalıştığım Google araması “WPQuery Yayın Tarihi” içindir. Kendiniz bulmaya çalışın! Ne alakalı görünüyor? En uygun olanı, WordPress’te belirli bir tarihten sonra yayınlanan sorgu yayınları başlıklı makale taşma yığını olduğunu düşünüyorum. Cevapta, Date_query’nin öğesini wp_query’ye devam ettirebileceğiniz ve aşağıdaki örnek kodu sağlayabileceğiniz ve ‘Date_query’ => Array (‘sonra’ => dizi (‘yıl’ => 2012, ‘ay’ => 3, ‘gün’ ‘=> 1,),), sorun değil, ama “3 ay” istemiyoruz, bu ay istiyoruz. PHP’de bu ay nasıl söyleriz? Çalıştığım Google araması “Bu ay PHP” içindir ve beni buraya getirir: https://stackoverflow.com/questions/5347217/simplest-way-tisplay-current-month-and yourn-nike- Ağustos- 2016-In-Php beni date_query için aşağıdaki koda götürüyor: ‘date_query’ => dizisi (‘sonra’ => dizi (‘yıl’ => tarih (‘y’), ‘ay’ => tarih (‘m ‘),’ gün ‘=> 1,),), 4. Tarih sorgularını ana sorgularla birleştirin -1, ‘Post_type’ => ‘Any’, ‘Post_status’ => ‘yayın’, ‘date_query’ => Array (‘Array (‘ yıl ‘=> Tarih (‘

Y ‘),’ ay ‘=> tarih (‘ m ‘),),’ gün ‘=> 1,),’ sipariş ‘=>’ tarih ‘,’ sipariş ‘=>’ desc ‘,);$ query = yeni wp_query ($ args);var_dupp ($ sorgu);ölmek;} Not 4. Adımda bu adımda, Date_query’nin parametresini Google Learning’imden mevcut WP_QUERY’ime katlamaya çalışıyorum.Ayrıca Posts_per_Page’ı -1 olarak değiştirdim, böylece ilgilendiğimiz tüm yayınları alıyoruz.Yukarıdaki kodu çalıştırmak şu sonucu verir:
Kod iyi mi kötü mü? O kötü. Neden? Niye? Var_dump () ‘da görünen çok sayıda post_date öğesi olduğundan, bu yıl Şubat veya Ocak ayları arasında geliyoruz. Talebimiz, alınması gereken sevkiyatı açıkça almıyor. Neyin yanlış olduğunu öğrenmenin zamanı geldi. 5. Çalışmadı, hata ayıklama -1, // ‘Post_type’ => ‘Any’, // ‘Post_status’ => ‘yayınlama’, // ‘date_query’ => dizi (// ‘=> Dizi (//’ yıl ‘=> tarih (‘ y ‘), //’ ay ‘=> tarih (‘ m ‘), //), //’ gün ‘=> 1, //’ ), // ‘sipariş’ => ‘tarih’, // ‘sipariş’ => ‘desc’, //); // $ query = yeni wp_query ($ args); $ After = Array (‘yıl’ => tarih (‘y’), ‘ay’ => tarih (‘m’),); var_dupp (sonra $); ölmek; } Not 5 Adımda bu adımda iki şey yapıyorum: yorum (ama silmeyin!) Kod garip davranıyor.
Garip davranışın görünürlüğü elde etmeye çalışın.
Garip oyunculuk bizim Date_query öğemizdir.Davranışı neden garip?Belki date_query gerçekten işlev görmez ya da başka bir şey değil, ama büyük olasılıkla yanlış bir şey yazdım.Öyleyse, bir değişkenden sonra $ yaparak ve giren var_dupp () girerek dizi tarafından gerçekte neyin üretildiğini kontrol edip edemeyeceğimizi görelim. Bu sonucu verir:
Bekle, bu doğru değil: ay bir ip, “Ekim”. Date_query sayısal bir şey beklemelidir. Bunun yaptığım hata olduğundan emin olmak için Google’da “PHP Tarihi” ni aradım ve bu sonucu kontrol ettim: https://www.w3schools.com/php/func_date_date.asp. Ve evet, tarih (‘m’) İngilizce olarak tarih adından ilk üç harf yazdırın. İstediğimiz şey değil. 6. Tekrar deneyin -1, ‘Post_type’ => ‘Any’, ‘Post_status’ => ‘yayın’, ‘date_query’ => Array (‘Array (‘ yıl ‘=> tarih (‘y’), ‘ay’ => tarih (‘m’),), ‘gün’ => 1,), ‘sipariş’ => ‘tarih’, ‘sipariş’ => ‘desc’,); $ query = yeni wp_query ($ args); // $ After = dizi (// ‘yıl’ => tarih (‘y’), // ‘ay’ => tarih (‘m’), //); var_dupp ($ sorgu); ölmek; } Not 6 Adım 6’da bu adım, test kodu hakkında yorum yapmamı, sorgu kodunun kendisi hakkındaki yorumları iptal etmeyi ve ‘M’ olarak ‘M’ olarak ‘M’ değiştirmemi içeriyor, çünkü ‘M’ nin size aslında size verdiği şey olduğunu fark ettim Bugüne kadar devam ettiği sayısal bir ay (). Bu kodu çalıştırmak aşağıdakileri verir:
Bu iyi mi kötü mü? Bu kötü: gönderiler wp_query boş bir dizidir, yani hiçbir şey almıyoruz. 7. Çalışmadı, hata ayıklama -1, ‘Post_type’ => ‘Any’, ‘Post_status’ => ‘yayın’, ‘date_query’ => Array (‘Array (‘ yıl ‘=> tarih (‘y’), ‘ay’ => tarih (‘m’), ‘gün’ => 1,),), ‘sipariş’ => ‘tarih’, ‘sipariş’ => ‘desc’,); $ query = yeni wp_query ($ args); // $ After = dizi (// ‘yıl’ => tarih (‘y’), // ‘ay’ => tarih (‘m’), //); var_dupp ($ sorgu); ölmek; } NOT Adım 7 Bu adımda, makale yığını taşmasına geri dönmek için “WPQuery Yayın Tarihi” için Google aramamı çalıştırmam gerekir, sorgu gönderisi WordPress’te belirli bir tarihten sonra yayınlanır ve bir hata yapıp yapmadığımı kontrol eder. Evet, yaptım: Bazı garip nedenlerden dolayı, gün sonrası -date_query öğesine gün koymak için kod örneğini izlemek yerine Day_query’den kendi dizi öğesi olarak koydum. Düzeltin ve kodu tekrar çalıştırın aşağıdakileri verin:

Bu iyi mi kötü mü? İyi: On görev aldık, on tanesi bu ay post_date mülkleri var. İlerlemek! 8. UI ve Kısa Kod -1, ‘Post_type’ => ‘Any’, ‘Post_status’ => ‘yayın’, ‘date_query’ => Array (‘Array (‘ yıl ‘=> tarih (‘y’), ‘ay’ => tarih (‘m’), ‘gün’ => 1,),), ‘sipariş’ => ‘tarih’, ‘sipariş’ => ‘desc’,); $ query = yeni wp_query ($ args); Ob_start (); while ($ query-> heat_posts ()): $ query-> the_post (); ?>

on <? PHP End; wp_reset_postdata (); return ob_get_clean ();
} Not Adım 8'de şimdi zor işler tamamlandı, bu yüzden aptal olmayan bir şeyle ilgili işlevlerimizin adını vermenin, kullanıcı arayüzüne karar vermenin ve halka açık temizlik yapma zamanı. Bu, bir WordPress geliştiricisi tarafından ve bir eklentidir, bu nedenle doğal arayüz seçimi kısa bir kod gibi görünmektedir. Add_action () add_shortcode () olarak değiştirdim ve kısa kod işlevinin adını doğru bir şeyle verdim, wpshout_show_this_months_posts_by_author (). Dev bir $ dönüş değişkeni oluşturmaya gerek kalmadan hangi işaretlemenin kısa kodlarla döndürüleceğini kontrol etmek için kısa kod tabanlı eklentilerin geliştirilmesi için favori bir araç kullanıyorum. Buffer-çıktı bölgesinde, özel bir kuyruk döngüsünde olduğumuz için The_Author () ve The_Date () gibi WordPress şablon etiketlerini serbestçe kullanıyorum. Ayrıca özel bir sorgu çalıştırdıktan sonra wp_reset_postdata () çağırmanın iyi olduğunu da hatırlıyorum, ancak kullanılması gereken doğru işlev olup olmadığını hatırlayamadım. Google "wp_reset_postdata veya wp_reset_query'de arama yaptım ve şu makaleyi buldum: https://wordpress.stackexchange.com/quetions/144343/wp-reset-postdata-or-wp-set-query-a-custom-loop, ne yapar WP_RESET_POSTDATA () düzgün çalışacağı sonucuna varıyorum. Aşağıdakileri vermek için yerdeki kısa kod wspout_show_this_months_posts_by_author ile eklentiyi sayfadaki eklentiyi çalıştırın:
Bu oldukça iyi, ama aşağıdan birinci makalede hangi tarih eksikti? 8. Yani_date () gerçekten garip mi? -1, ‘Post_type’ => ‘Any’, ‘Post_status’ => ‘yayın’, ‘date_query’ => Array (‘Array (‘ yıl ‘=> tarih (‘y’), ‘ay’ => tarih (‘m’), ‘gün’ => 1,),), ‘sipariş’ => ‘tarih’, ‘sipariş’ => ‘desc’,); $ query = yeni wp_query ($ args); Ob_start (); while ($ query-> heat_posts ()): $ query-> the_post (); ?>

on <? PHP End; wp_reset_postdata (); return ob_get_clean (); } Not Adım 9'da the_date () çağrımızın istediğim gibi çalışmadığından şüpheleniyorum, bu yüzden "WordPress the_date" için bir Google araması yaptım.
Resmi sayfaya başladım: https://developer.wordpress.org/reference/fonctions/the_date/ Bana fazla söylemedi. Ayrıca https://wordpress.stackexchange.com/questions/52489/the-date-not-winking gördüm ve inceledim. The_date () tarih başına yalnızca bir yazı görüntüleyeceği ortaya çıkıyor. Aynı yayın tarihine sahip iki gönderi varsa, çalışmayı durdurur. Ve get_the_date () 'nin sorunu olmadığı ortaya çıkıyor, bu yüzden kod satırını the_date ()' den değiştiriyorum; echo get_the_date () için; . Bu garip bir sorun mu? Çok. The_Date () 'nin neden bu yarı hassas bir şekilde kodlanacağını bilmiyorum veya get_the_date () neden bu sorunu paylaşmayacağını bilmiyorum. Ama yeni bir kod çalıştırmak bize şunu veriyor: ve aradığımız şey bu. Yukarıdaki WordPress eklenti çalışmasının geliştirilmesi hakkında genel düşünme yaklaşık iki saat sürer. Bu çok mu yoksa biraz mı? Bu, nasıl yazılacağını bildikten sonra işlev gören eklenti kodunu yazmak için uzun bir süre olacaktır, ancak bu, WordPress eklentilerinin, yani öğrenme, deney, araştırma ve deneme ve hata ve hatanın geliştirilmesi için neredeyse uygundur. Bu iki saat içinde aşağıdakilerin çoğunu yaptım:

PHP çekirdek özellikleri ve çekirdek WordPress yangınları hakkında derinlemesine bilgiye güvenmek.

Unuttuğum veya nasıl olduğunu bilmediğim şeyleri Google.

Bir hata yaptım.

Hata ayıklama hatası.
Ve bu iki saat içinde aşağıdakileri yapmadım:

Derin bilgiye sahip olmak yerine gerçekten akıllı olan kod üreticilerine bağlı kod yazın.
Sadece havalı çocuklar tarafından bilinen çok belirsiz olan araçlara, dile veya “hacklemeye” güvenmek.

Bu, WordPress eklentisinin geliştirilmesidir – özellikle bunun gibi nispeten basit bir eklenti için bir müşteri için bir serbest çalışan tarafından yazılacak. Bu, mevcut bilginizi kolay şeyler yapmak için kullanmak ve zor şeyler yapmak için yeni bilgileri nasıl elde edeceğinizi ve birleştireceğinizi bilmekle ilgilidir, hem de ortaya çıkan hataları hem de PHP ve WordPress’in nedenini test etmeye ve düzeltmeye devam etmekle ilgilidir. (Yukarıdaki en iyi örnek, bazen garip bir yazılım sistemi haline gelerek bizim_date () problemidir.
Yukarı ve Çalışmak, “WordPress Gelişimimizi Öğrenmek” tam bir kurs. Şimdi güncellenen ve genişleyen üçüncü baskıda, bu, WordPress’in gelişimini hızlı, akıllı ve kapsamlı bir şekilde öğrenmek isteyen yüzlerce alıcıya yardımcı oluyor. Dedikleri şey bu:
“Denediğim diğer kursların neredeyse her zaman WordPress’in neden belirli bir şekilde bir şey yaptığını veya her şeyin birlikte nasıl çalıştığını açık bir şekilde açıklamamış. Tüm bunları çalıştırıyor ve her şey net ve anlaşılması kolay bir dilde açıklanıyor. ” –Caroline, WordPress Serbest Çalışanlar
“Yukarı ve koşu gerçekten her şeyi bana birleştiriyor. Bazı parçaları zaten biliyorum, ancak bu kurs boşluğu dolduruyor ve gerçek WordPress’in nasıl çalıştığına dair uygun bir anlayış sağlıyor. Takip etmeyi kolay hissediyorum, doğru bilgi derinliğini doğru sırayla veriyorum. ” –Hugues, Gevşek Web Geliştiricileri
Uyan ve şimdi koş

admin

Bir Cevap Yazın

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