WordPress’te PHP çıkış arabelleğe alınma sayısı
PHP çıktı tamponuna giriş ve WordPress’te kullanımı birkaç yararlı kaynak içerir:
PHP’nin arabelleğe alma çıkışının WordPress kısa kodu için nasıl yararlı olduğunu gösteren ilk kod demosu.
PHP çıkış tamponunun okunabilen bir HTML çıkışı kullanan karmaşık bir filtre oluşturmaya nasıl yardımcı olabileceğini gösteren ikinci kod demosu.
Her ikisini de bu kod demolarının her ikisini de içeren ve kodun kendisiyle oynamanıza izin veren basit çocuk temaları (GitHub’da mevcuttur).
PHP’nin WordPress için tamponlama çıktısına ayrıntılı bir girişin tadını çıkarın!
PHP’yi öğrendiğimde, beni gerçekten karıştıran ilk şeylerden biri, üretilen kod – “mallar”, kullanıcılar için HTML olarak görülen içerik arasındaki farktı ve kod değil.
Şimdi anladığım şey, çoğu PHP kodunun verileri değiştireceği, ancak kullanıcıya göstermeyeceği. ECHO PHP ifadesi temel olarak bir çıkış üreticisidir: PHP kodundan “sızarlar”, diğer PHP kodlarının çoğu yapmazken anlamlı ve görünür bir çıktı oluştururlar. Az önce açıkladığım kurallar için çok güçlü istisnalar var: PHP çıkışını tamponlamak. Tampon çıktılarıyla, gerçekten üretmeden önce Edo ED-OSTPUT-BE-ORTPUT’u yakalayabilir, depolayabilir ve değiştirebilirsiniz. Yankı çıkışı ile yakalama ve çalışma süreci “çıkış tamponlama” ile kastedilen şeydir. Bu beni önce kafamı karıştırdı ve sonra (sonra, bir … tampon düşündüm) düşündürdü.
WordPress geliştirmeyi öğrenmek konusunda ciddi mi? Uyan ve bugün koş
Uyan ve şimdi koş
Öyleyse PHP tamponlama çıktısının gücünü ve WordPress’teki kullanımlarının çoğunu açalım. Bu makalede şunları yapacağız:
Çıktı ve veri işleme arasındaki farkı daha ayrıntılı olarak anlayın
PHP çıkış tamponunun temellerini açıklayın
PHP çıkış arabelleğinin neden karmaşık WordPress kısa kodları için çok önemli bir teknik olabileceğini temelden bilin.
WordPress’te arabelleğe alma çıkışının diğer kullanımlarını keşfedin: The_Content HTML filtresinin ağırlık kullanımı
Widget’lar için kullanma olasılığına dokunun
PHP’de programlama ve çıktı arasındaki fark, “bir şey göstermeye çalışmak” ve “verileri manipüle etmeye çalışmak” arasındaki fark, Get_the ile başlayan etiketler ve etiketler ile başlayan WordPress şablonu etiketi arasındaki farktır.
PHP iki tür işlemden oluşur:
Bir şey göstermeye çalışmak ve
Verileri manipüle etmeye çalışın.
WordPress’i inceleyen insanların bu farkı, The_Title () gibi başlayan WordPress şablon etiketleri ile get_the_title () gibi get_the ile başlayan etiketler arasındaki farkla sık sık anlamaları için en hızlı yolu. Bu benim için doğru. Basit bir örnekle belirtelim. Bir temada bir yayının sayısal kimliğini göstermek istediğimizi, ancak önce 20 eklemek istiyoruz. Söz konusu yayın kimliğinin 1’de olduğu varsayılarak, bu kod, yorumlar tarafından listelenen değeri gösterme etkisine sahip olacaktır: The_ID (); // çıkışlar 1 get_the_id (); // çıktı yok echo get_the_id (); // çıkışlar 1 (the_id () + 20); // Çıkış 1 (nedenini dikkatlice düşünün!) Echo (get_the_id () + 20); // Çıkışlar 21 get_the_id, daha fazla işleme veya yalnızca depolanan değeri size döndüren bir işlevdir. Tersine, the_id () yalnızca değer gösterir, göndermez veya herhangi bir şey size geri döner. Temel olarak, kastettiğim, PHP arazisinde verilerin – dizeler, sayılar, ne olursa olsun – varsayılan olarak görüntülenmemesidir. get_the_id, daha fazla işleme veya yalnızca depolanan değeri size döndüren bir işlevdir. Tersine, the_id () yalnızca değer gösterir, göndermez veya herhangi bir şey size geri döner. Dolayısıyla, kimlik değerini değişkene kaydetmek istiyorsanız, $ id = get_the_id () gibi bir ifade yazmak istersiniz. $ id = the_id (), çok benzer görünse de, sizi çok kafa karıştırıcı olacaktır, çünkü tamamen ayarlanmamış bir değeriniz olacaktır.
Bu konseptle saatlerce kavga ettiğimi hatırlıyorum (belki günler bile). Önemli olan, manipüle ettiğiniz verilerin PHP Land’de olmasıdır, ancak yankı değilseniz – echo get_the_id () gibi bir şeyle veya_id’in işleviyle (temelde çadır altında önceki bir ifade yapar) – görünmez. Tersine, bir şeyi yineliyorsanız, PHP’de kolayca manipüle edebileceğiniz bir şey yaratmaz. Bu yüzden yukarıdaki_id () + 20 satırı 1 üretir. Çünkü WordPress’teki the_id () çağrısı geri dönmeden yankı içerir. Yani kanalımızın işlemi yapacak hiçbir şeyi yok. Bunun yerine, ekranda yankılanan Calls_id () ‘nin sadece 1 sonucu var. Bu kuralların tümü PHP’de (lütfen davul): arabelleğe alınması hariç. PHP çıkış arabelleği yangını PHP çıkış arabelleğini çalıştırarak: Yalnızca yankı veya görüntülenen verileri görüntülemek yerine, PHP bunu sizin için yakalayacak ve değişkeni depolamanıza izin verecektir. Diyelim. Ne yapıyorsun? Şimdi bu senaryo için, PHP’nin kullanıcı tarafından manipüle edilebilecek bir tampon çıktı konseptine sahip. Çıkış arabelleği, PHP’nin kodunuzda kullanabileceğiniz şekilde görüntülenmesi gerekenleri depolayacağı bir yerdir.
Çıktı arabelleğini çalıştırdığınızda, yalnızca yankı ve görüntülenen verileri görüntülemek yerine, PHP bunu sizin için yakalayacak ve değişkeni depolamanıza izin verecektir. Ardından, bir değişiklik yaptıktan (veya yapmadıktan), kendinizi yankılayabilirsiniz. Bu, daha basit bir kodun etkisini değiştirmenize izin veren güçlü bir kavramdır. Çıkış çıkışının temelleri PHP’nin temelleri, “çıktı arabelleği” terimini temsil eden OB_’yi başlatan bir dizi işlevdir. OB_START (): Çıktı arabelleğinizi başlatın, good: ob_start () adlı bir işlevi çağrı ile çıktı arabelleğini başlatır.
OB_START () arabelleği açın ve bir dize olmak için web tarayıcısıyla ilgili olması gereken her şeyden kurtulun. “Bu tamponu kapatana kadar, piyasaya sürülecek olan her şey, yankı olan içerik bile, arabelleğe daha uzun olan tek bir dize olarak bile saklanıyor.” Ob_start () ile arabelleğe başladıktan ve bazı çıkış arabelleğine girdikten sonra birçok obez fonksiyon, çıkışı hasat etmek ve arabelleği sıfırlamak için birkaç adım vardır. Adım adım sürüm, OB_GET_CONTENTS () ile bir arabellek içeriği almanızdır, bu da size PHP değişkeni veya doğrudan yankı olarak saklanacak çıktı arabelleğini sağlar.
Ancak ob_get_contents () içeriği çıktı arabelleğinde bırakır ve ayrıca devam eder. Bu nedenle, tamponu silmek için OB_CLEAN () ve tamamen bitirdiğinizde OB_END_CLEAN () çalıştırmanız gerekir. PHP.NET Çıktı Tampon Çıktı belgeleri, diğer dil özelliklerinin çoğu gibi oldukça samimi ve erişilebilir, bu nedenle adım adım yaklaşımı bilmek istiyorsanız, kaynağınız olarak tavsiye edeceğim. Neyse ki, “hasat” olan ve tamponunuzu bir kerede devre dışı bırakan bir işlev vardır: ob_get_clean (). OB_GET_CLEAN (): Üç kuş, PHP çıkış arabelleğini kullandığım zamanın% 90’ı, aslında sadece üç şeyi birlikte yapan ob_get_clean () arayarak içeriği alıyorum: arabellek içeriğini alın, tamponu temizleyin ve çevirin ve çevirin daha fazla tamponlama. Sizin için her ikisi de gerçekleştiren PHP işlevini göstermek amacıyla çıkış arabelleğinizi temizleme ve kapatma ihtiyacından bahsediyorum: ob_get_clean (). Aslında, ob_get_clean () toplam üç şey birlikte yapın: Tamponun içeriğini alın,
Tamponu temizleyin ve Daha fazla arabelleğe alın. (Ne yazık ki, bu işlev adına görüntülenmez, ancak bunu yapar.)
Belki PHP çıkış arabelleğini kullandığım zamanların% 90’ı, içeriği yalnızca ob_get_clean () arayarak alıyorum. Basit kod demonumuz için, kimliğimizi değiştirmek için ob_start () ve ob_get_clean () kullanalım (Get_the_id () ‘nin mevcut olmadığı dünyada olduğumuza göre). Aşağıdaki görünüm: OB_START (); Kimlik (); $ id = ob_get_clean (); Echo $ id + 20; Burada dikkate alınması gereken bir şey: Her zaman ob_get_clean (veya ob_get_contents) ‘den dize türü değeri alırız. PHP gevşek bir şekilde yazıldığından, bir numaraya ‘1’ ip yapmaktan ve burada bize 20 eklemekten mutluluk duyacaktır. Bununla birlikte, PHP’de bu tür dönüşüm türünü izlemeniz gerekir, çünkü beklenmedik sonuçlar sağlayabilir. WordPress kısa kodunda hızlı bir şekilde ferahlık, WordPress kısa kodunu biliyorsanız, gönderinin içeriğine biraz programlama eklemenin basit bir yolu olduğunu biliyorsunuz. Yalnızca [Our_example_Shortcode] gibi bir şey yazımızın gövdesine girerek, bunu bir işlevin birkaç çıktısı ile değiştirebiliriz. Bu çok güzel ve kullanışlı. Değiştirilecek kod [our_example_shortcode]: add_shortcode (‘our_example_shortcode’, ‘wspout_example_shortcode_function’) kadar basit olabilir; İşlev wspspout_example_shortcode_function () {return ‘Kısa kodu aradığınız yere bakıyorum!’;
} Temel olarak, kısa kod adınız ve işlev adınızla birlikte add_shortcode (biraz özel bir add_filter veya add_ace örneği gibi) arayın ve hazırsınız. Kısa kod yankılanmayın, kısa kodlar hakkında farkına varmak çok önemli olanları geri döndürenler aşağıdaki gibidir: Yankı değil, görüntülenmesi gereken geri dönüşü istiyorsunuz. Yanlış olduğunuzda, kısa kod işlevinde bir şey yankılandığınızda, sadece doğru görünüyor Gönderideki doğru konumda olması gerekenleri değiştirmek yerine, temanızda the_concent () çağrıldığı içeriğin üstünde. Kısa kodlar her zaman doğru yerde görünecek metin içeriğini döndürmelidir. Kısa kod için içerik iademize ihtiyacımız olduğu için, kısa kodumuzda çok fazla ham HTML üretmek istiyorsak – örneğin karmaşık tablolar veya benzeri – o zaman iki kötü seçeneğimiz var:
Tüm HTML’nizi PHP dizesine girin, tüm dansları tırnak ile oynatın. (Biliyorsunuz, ‘
HTML ve PHP’nizle dolu bir şablon dosyası ekleyin, ancak yanlış yerde geliyor.
Bu, PHP’nin tamponlama çıktısının bir kurtarıcı olduğu ve neden kısa kodlar için çıkışı arabelleğe almayı sevdiğimi. Bu, kısa kodun çalışma şekline aykırı olmaktan endişe etmeden orijinal HTML şablonunu çok kolay kullanmanıza olanak tanır. Aşağıdaki demo nasıl olduğunu gösterir. DEMO 1: PHP çıkışı arabelleğe alınması neden bu demo kısa kodu için çok kullanışlıdır. Kaynağın kendisini görün, aşağıdaki iki gösteri için tam kodu içeren basit bir yirmi on yedi çocuk teması yaptım. Lütfen GitHub’a bakın! Zip olarak indirebilir veya kaynağı izleyebilirsiniz. Amaç: Kısa koddaki karmaşık şablonu kaldırın Bu demoda hedefimiz, nispeten karmaşık bir HTML/PHP şablonu görüntüleyebilen kısa bir kod oluşturmaktır. Bu şablon dosyanın kendisinde, Post-quickview.php, temamızdaki alt klasörde, Custom-Tempelas: // Çevre: Bu, özel test klasörünün içindeki quickview.php dosyasıdır.
Doğru çıktıysak, yayın başlığından, üstün görüntüden ve alıntıdan biraz “QuickView” alırız:
Şimdi, bu vurucu: şablonu kısa bir kod olarak sunabilmek istiyoruz, böylece küçük “QuickView” i yayın içeriğimizin her yerine yerleştirebiliriz. Bu nedenle, kimliğe dayalı bir gönderi seçebilmeliyiz: ve ön uçta aşağıdaki sonuçları alın:
Oldukça açık? Aşağıdakiler, Get_Template_Part () ‘yı varsayılan davranıştan, yani “sızıntı” (echo)’ nın doğrudan sayfaya (‘Windout_quickview_post’, ‘Windout_quickview_post’u korumak için çok önemli olan PHP çıkış tamponlama kullanımı ile bunu yapmak için aşağıdakiler aşağıdadır. ‘); İşlev wspout_quickview_post ($ atts) {// Bir posta kimliği seçmezsek (! $ Atts ||! $ Atts [‘post_id’]) {return ‘Post kimliği belirtilmedi.’; } // Geçerli Post nesnesini getirin ve Global $ gönderisini $ this_post = get_post ($ atts [‘Post_id’]) olarak işaretleyecek şekilde ayarlayın; Global $ Post; $ post = $ this_post; setup_postdata ($ yazı); // çıkış arabelleğini başlat, bu yüzden get_template_part ob_start () sayfasına çıktı değil; // şablon dosya çıkışı get_template_part (‘custom-tempelas/quickview sonrası’); // Çıkış kaydet ve çıkışı durdurun Buffering $ output = ob_get_clean (); // Orijinal durumuna $ gönderiyi döndür wp_reset_postdata (); // return tamponlu çıkış kısa kod konumunda çıktı olacak $ çıktı döndürür;
} Harika, değil mi? Post-quickview.php şablonları kendileri ham html ile yazılabilir ve the_title () ve the_excerpt () gibi çıktı üreten her türlü PHP işlevini kullanmakta özgürdür-ve yine de geri dönen kısa bir kodda girebiliriz S dönüş içeriği H HTML Echo yerine. İşte bu örneğin diğer avantajları: Kısa kodlarımız için gerçek PHP kodunu HTML’den tamamen ücretsiz olarak kaydedebiliriz. Ekranda gerçekten basılan her şey tek bir yerde: quickview.php sonrası. Kısa kod işlevinde birleşmez ve başka birçok yeri vardır. Net sorunların saflığı ve ayrılması WordPress kodunda çok yaygın değildir, ancak bu çok yararlı ve çok iyi bir uygulamadır. DEMO 2: Filtre işlevindeki arabelleğe alma işlevi the_concent WordPress’te başka ne zaman yankı yerine geri dönmeyi istiyoruz? WordPress filtre işlevi ne olacak? Bu ikinci demo, the_concent filtresine bağlanarak tek bir yazının altına oldukça uzun bir HTML altbilgisi ekler. Şimdi, WordPress filtreleri genellikle şeyleri yankılamaz, daha ziyade verilen bir şeyi (burada, dize) değiştirir ve sonra tekrar döner. Peki HTML dizimizi yankılanmadan nasıl oluşturacağız? Aşağıdakiler kasvetli bir yol: $ string = ‘
altbilgi bölümü
…’; Dönüş $ String; Ama daha iyi bir tane var! Yalnızca ham HTML’yi doğrudan işleve yazacağız ve HTML’yi “yakalamak” için çıkış arabelleğini kullanacağız, böylece yayınlamak yerine geri dönebilmemiz için: // PHP Çıktı Tamponunu the_content filtre kancası add_filter (‘
The_concent ‘,’ wspspout_add_single_post_footer ‘);İşlev wspout_add_single_post_footer ($ content) {// Yalnızca tek yayınlarda (! Is_singular (‘post’)) {return $ content;} // OB_START () sayfasına “yazabilmemiz için çıktı arabelleğini başlatın;?>altbilgi bölümü
Burada her türlü html yapabilirim
En temiz kod için, Demo #1’de belirttiğimiz gibi, bu HTML içeriğini kendi şablon dosyasına bölmek ve get_template_part () ile girmek çok kolay olacaktır – bir kez daha, get_template_part’ı durdurmak için arabelleğe alma çıktısının gücü nedeniyle () Doğrudan çıktıdan doğrudan çıktıya sayfa. Düşünmek: Kısa modeller dışındaki widget’lardaki şablonlar için arabellek çıkışı, WordPress’te kendimi PHP’nin tamponlama çıkışına ulaşırken bulabileceğim diğer yerler bir widget oluşturulmasıdır. Kısa kodlardan farklı olarak, WP_WIDGET genişletme sınıfı widget yönteminizin istenen çıkış getirisine ihtiyaç duymadığı, yalnızca yankı olabilir. Ancak kısa bir kod gibi, HTML’mi doğrudan PHP kodumla karıştırmayı sevmiyorum. İşte tamponlama çıkışını kullanabilirim. WordPress PHP’de bir widget yapmaya çok alışık değilseniz, bu konuda ücretsiz kursumuzu görebilirsiniz: WordPress Widget Oluşturma: Komple Kılavuzum, bu bölümün geri kalanında WordPress widget’ın genel biçimini anladığınızı varsayarsa, Bunu mantıklı hale getirmek istiyorsunuz ve bilmiyorsunuz, burada duraklayın ve oku. Dediğim gibi, çıktı odaklı PHP kodu ile gerçekten mantık odaklı PHP kodlarını karıştırmaktan gerçekten hoşlanmıyorum, kısa kodlarda olduğu gibi genellikle widget’imde bir şablon yapacağım. Fark sadece ilgili widget yönteminin sonuçları göstermesidir. Yani kod çok benzer görünüyor, tek gerçek değişiklik Echo’ya dönüş. İşlev widget () {ob_start (); ‘Path/to/your/taplate.php’; echo ob_get_clean ();
} Ancak, widget’ta bu kod doğru seçim değildir. Sonuçta, bu makaleye bir şeyi yineleyebiliyorsanız, PHP çıkış arabelleğini kullanmanız gerekmediğini açıklayarak başladık. Ve aslında, kodu sık sık şu şekilde yazacağım: function widget () {Inslow ‘Path/to/Your/Your/Your Template.php’; } Çıkış arabelleğini kullanmamın ana nedeni, çıkış widget’ını (veya formu) karmaşık bir şekilde değiştirmeye ihtiyaç olmasıdır. Bu nadir bir düşünce. Kısa modeller ve widget’larla, çıkış arabelleği, WordPress kodunuzu çok daha iyi hale getiren en kullanışlı ve basit PHP özelliklerinden biridir. Ancak widget ile, şablonlama için tamponlama çıkışının kullanılması ihtiyacı, kısa koddan çok daha mutlak değildir. Çıktı PHP: Çok Kullanışlı Bir Araç Sadece WordPress geliştiricilerinin çıktı -shortcode’u arabelleğe alınmasından büyük faydalar elde edebileceğini düşündüğüm basit bir yeri tartıştık – ancak burada bitmiyor. Tampon çıkışı, dikkatsiz olan eski PHP kodu temelinde hayatınızı kolaylaştırabilecek en değerli yollardan biridir. Çok fazla deneyime sahip olduğum örnekler: Hem bazı yararlı eylemler yapan hem de istemediğiniz bazı çıktılar yayınlayan büyük ve korkutucu bir işleviniz var mı?