Neden, ne zaman ve kendi şablon etiketinizi nasıl yapacağınız
WordPress ile ilgili en güzel şeylerden biri, beklediğiniz gibi çalışan birçok şey olmasıdır. WordPress’in çadırın altında ne yaptığını bilemeyebilirsiniz – veritabanından veri çektiğini, PHP’de yazıldığını, eklentinin kancalardan vb. Çalıştığını bilmiyor olabilirsiniz – ancak bir WordPress şablonunu açtığınızda, Tahmin edin. Bu şablon etiketi WordPress’te ve çok iyi. Ancak bunu kullanan birçok insan tarafından gerçekleştirilmeyen şey, kolayca kendiniz yapabilmeniz ve çok yararlı olmasıdır.
Neden bir şablon etiketi yapmanız gerekiyor, bu yüzden ne yaptığımızı tartıştık: the_excerpt () gibi kendi işlevlerimizi yapmak, net olan bir sonraki soru “Neden?” Temel olarak, tema dosyalarınızın veri toplama mantığı haline gelmemesini sağlamak için projeniz için iyi bir şablon etiketi seti. Daha önce gördüyseniz, ne demek istediğimi biliyorsunuz: Şablon hiyerarşisinin bir üyesi (single.php hakkında düşünmek) yerine birkaç düzine uzun satıra, karmaşık veri ekranı için genellikle yüzlerce bulacaksınız.
Veri toplama mantığı ile ne demek istiyorum? WordPress’te birkaç yeni içerik türü için küçük bir dizin tipi ekran oluşturduğumuzu düşünün. İçeriğimiz bir film incelemesi ise, büyük olasılıkla her inceleme için bir yıldız sıralaması ekleyeceğiz, belki bir tür taksonomi, belki de film sloganından “ikinci üç özet” ve daha fazlası gibi başka şeyleri de ekleyeceğiz. Bu öğeyi elde etmek için kendinizi hızlı bir şekilde kendinizi şu şekilde bulabilirsiniz: Bu, kendi başına, dünyanın sonu değil. Ancak birçoğunu, özellikle de etraflarında bazı mantıkla birleştirdi ve hızlı bir şekilde büyük olacak. Karmaşık veri toplama mantığı ve şablonda çok uzun süre WordPress’te çok yaygındır, çünkü çok kolaydır: dosyaya birkaç PHP daha girin (son zamanlarda “dört tür şablon …” ile konuşuyoruz),, Ama bu onu bir fikri iyi yapmaz. Tema sayfalarımız mümkün olduğunca net ve basit olmalı ve kendi şablon etiketimizi yapmak iyi bir ilk adımdır.
Kendimi ne zaman yapmalıyım? Sizden önce daha fazla kod satırı yapmak, zaman kaybetmek için iyi bir yol olması gerektiğini. Bunu kısmen size yaptığınızda. Periyodik bir temizlik aşaması olarak şablonunuzda kötü davranmak için kendinizi bulduğunuzda bir şablon etiketi yapabilirsiniz. Önümüzdeki her şeyi de yapabilirsiniz. Belki bir tür için taksonomimizi yaptığımızda, onu almak için uygun bir şablon etiketi yapmak istedik. Size kalmış. Tek uyarım: Yagni’yi hatırla. Yagni, “İhtiyacınız Olmayacaksınız” kısaltmasıdır ve bu tür bir şablon etiketinin yapımını “her ihtimale karşı” yapıp yapmadığınızı hatırlamak için iyi bir şeydir. Sizden önce daha fazla kod satırı yapmak, zaman kaybetmek için iyi bir yol olması gerektiğini. Önde gelen rotayı almayı düşünürseniz, asla aramayacağınız işlevleri oluşturmak için saatler harcamanız için dikkatli olun. Şablon etiketinizi nasıl yapacağınız birçok PHP işlevi yaptıysanız, bunu biraz bulacaksınız sıkıcı. Değilse, tüm fikirden biraz korkabilirsiniz. Ancak temel olarak, yalnızca WordPress şablon etiketinin sadece bir PHP işlevi olduğunu fark etmeniz gerekir. Peki bunu nasıl kendiniz yapıyorsun? Sadece birkaç işlev yazın. Hatırlanması gereken önemli bir şey, WordPress gibi şablon etiketlerimizin döngülere bağlı olacağıdır. Yukarıdaki örneğimizde, get_the_id () geçerli döngü-prime gönderisini ifade eder (yani the_post ()). Bu, WordPress’in.php işlevimize başvuracağımız global $ özel bir yayın ayarlaması gerektiği anlamına gelir.
Son paragrafta sizi biraz kaybedersem genel bir özel alan almak cesaret kırılmaz.Aşağıda açıklayacağız.Bu örnekteki amacımız, tüm özel alanlarımız için kaba yıldız sıralaması türünü genel alıcılara değiştirmektir.Kodda istiyorum: // yap // Nasıl?Şimdi sadece bunun gibi basit bir işlev, function.php dosyasına girin.Bu, bir dizeyi alan bir işlevdir, alan için kısaltma adımızdır ve çağrı çağrılarımıza doğru yere koyar.Posta posta alanlarımızın tamamı _movrev_ öneki ile “ad olarak adlandırıldığından”, bunu her yerde hatırlamamız gerekmez.
Global $ Post hakkında kısa bir not çünkü bazı insanlar işlevlerinin tarafından erişilen küresel durumu açıklamayı tercih etmeyi tercih ediyor (kendimden gizlemeyi ve WordPress’in küresel bir statüsü olmadığı sakinleştirici bir yanılsamada yaşamayı tercih ediyorum …) Ayrıca Yukarıdaki işlevi şu şekilde yazabilirsiniz: işlev movrev_field ($ field_name) {global $ post;echo get_post_meta ($ post-> id, ‘_movrev _’. $ field_name, true)} Bunu kaydediyorum çünkü bunu sık sık göreceksiniz.Etkili bir şekilde, Global $ Post’a yapılan çağrılar, WordPress tarafından Loop’ta düzenlenen Global Durumuna erişir ve ardından $ Post nesnesinin kendisinden bir kimlik alırız.Çadırın altında, bu tam olarak get_the_id () ne yapar, ancak yeni programcıların ikisinin eşit olduğunu fark etmemeleri için kafa karıştırıcı olabilir.
Bazı özel alanlar almak, uzaklaşmayı tercih ettiğimizi söylüyor. Parametrelerle bu işlev yerine, WordPress stilinde iyi niyetli bağımsız değişkenler olmayan bir şablon etiketi istiyoruz. Derecelendirme ekranımızın aşağıdakiler gibi çeşitli kodlarla yapılmasını istiyorsak:
derecelendirme: <? Php the_star_ting (); Bunu yapmak için kod: function the_star_ting () {echo get_post_meta (get_the_id (), '_movrev_star_ting', true); } "İsmin Yerleştirilmesi" hakkında not bu kod umarım oldukça açıktır, bu yüzden açıklamamıza gerek yoktur. Bunun yerine, "fakirlerin adının adı" olarak adlandırdığım şeyle başlamayan kendi işlevimi yazdığım gerçeğinden biraz bahsedelim (onu orijinal PHP adı alanından ayırt etmek için). Genel olarak, WordPress ekosisteminde bir işlev yazdığınızda en iyi uygulama, PHP'den kötü şikayetleri tetikleyecek çarpışmaları adlandırmak için işlevinizin önünde her zaman bir "isim odası" olmaktır. (Son isim alanı hakkında daha fazla tartıştık, bu yüzden bu paragrafı tam olarak takip edip etmediğinizi kontrol edin.)
Bu iyi bir tavsiye. Ancak bazen, hem şablonunuzun güzelliği hem de diğer nedenlerle, hesaplanmış bir risk almak daha iyidir. Fonksiyonumun adını verirken the_star_ting (), bu WordPress sitesinin asla işlevin adından farklı bir eklenti (veya tema) yüklemeyeceğine ve WordPress’in çekirdeğinin bu tür şablon etiketlerini asla tanıtmayacağına bahse girerim. Bu teorik sitede bahiste katılıyorum. Ancak değilse, “ad alanı” nınızı öne kolayca ekleyebilirsiniz: movrev_the_tar_ting () işlevi {echo get_post_meta (get_the_id (), ‘_movrev_star_ting’, true); } Şablon etiketinizi gerçekten ödeyin: Özel değeri oluşturma çok iyi şeylerden biri ve yıldız derecelendirmelerinin nedenleri iyi bir örnektir-şablon etiketinin sadece değeri geri yüklemek istemediğinizde sizin için gerçekten yararlı olmasıdır. , ancak belirli bir formatta döndürün. Diyelim ki tamsayılarımız yıldız sıralamasının bir ve beşi arasındaki Dolu Yıldızdan (?, ✭) ve Boş Yıldızlardan (?, ✩) HTML varlığı ile oluşturulacak. (Estetik olarak, her ikisi de görevimize uygun hissetmez, ancak bu kodu oldukça basitleştirir.) Sonra her zaman beş yıldız görüntülemek için basit bir döngü kullanabiliriz, doldurulmuş ve boşaltılmış doğru miktarda yayınlayabiliriz:
İşlev movrev_the_star_ting () {$ rating = get_post_meta (get_the_id (), ‘_movrev_star_ting’, true); ($ i = 1; $ i = $ i) {echo ‘✭’; } else {echo ‘✩’; }}} Şimdi şablon etiketini nerede kullanırsanız kullanın, sadece bir sayı değil, verilen yıldızı alacaksınız. İyi! Taksonominin değerini son örnek olarak almak, bu sefer sahada değil taksonomi ile. “Bu öğeyle ilgili taksonomi terimini görüntüleyin” Basic oldukça basit bir şablon etiketidir. İşlev mevrev_genre () {the_terms (get_the_id (), ‘tür’); } Şablon etiketimizdeki işlev neredeyse çok kısadır, bu nedenle kendi şablon etiketimizi hiç yapmamıza gerek yoktur. Ancak varsayalım – müşteri spesifikasyonlarının nedenleriyle, SEO, her neyse, terimin bağlantılı olmasına izin veremezsiniz. Bu, kendi şablon etiketinizi oluşturmanın bir başka avantajıdır: her zaman kullanıyorsanız ve “tür arşivlerine asla bağlantı kurma” gereksinimlerini almadan önce kullandıysanız, tüm sayfalarınızdaki davranışları basit bir şekilde hızlı bir şekilde değiştirebilirsiniz. Şablondaki değişiklikler sizi imzalayın. Bağlantının en kolay sürümü şu şekilde yapılır: function mevrev_genre () {echo strip_tags (get_the_terms (get_the_id (), ‘tür’););); } Alışmıyorsanız, Strip_tags yalnızca tüm HTML etiketleri olarak işaretlenmiş ve yayınlanan HTML kullanan bir PHP işlevidir. Bu durumda, silecek