Her zaman sayfanın üstünde görünen kısa kod


15

Ben loop-name.php üzerinden farklı döngüler çekmek için bir kısa kod kullanıyorum. Nedense her zaman sayfanın üst kısmındadır. Ben googled ve dönüş yerine yankı kullanarak bu soruna neden olur ama benim kod ile yankı kullanmıyorum. İşte kısa kod:

// setup the shortcode for use
function friendly_loop_shortcode( $atts, $content = null ) {
extract( shortcode_atts( array(
'category' => '',
'module' => ''
), $atts ) );

include(locate_template('loop-'.$module.'.php'));
 }

Bunun neden olduğu hakkında bir fikrin var mı?


Dosya eklemek için kısa kod? Biraz tuhaf buluyorum.
Rutwick Gangurde

1
'benim kod ile echo kullanmıyorum' - loop-module.php dosyaları yankılanıyor veya çıktılarını döndürüyor mu?
Michael

Şu anda değil - dosya sadece "test" yazılı bir paragraf etiketi vardır, bu yüzden nasıl çalıştığını görebilirsiniz.
john joe

get_template_part('loop',$module)bunun yerine, kullanmak daha güzel, daha hızlı yazıyor, ebeveyn / çocuk temalarını destekliyor ve wordpress'e şablonlar eklemek için önerilen yöntem (evet locate_template bu şeylerden bazılarını yapabilir, ancak ne kadar daha az okunabilir olduğuna bakın!)
Tom J Nowell

Yanıtlar:


16

Çıkışı şu şekilde arabelleğe alabilirsiniz:

ob_start();
include(locate_template('loop-'.$module.'.php'));
return ob_get_clean();

DÜZENLE. Bunu denedim, iyi çalıştı.

function friendly_loop_shortcode( $atts, $content = null ) {
     extract( shortcode_atts( array(
         'category' => '',
         'module' => ''
     ), $atts ) );

     ob_start();
     include(locate_template('loop-'.$module.'.php'));
     $output = ob_get_clean();
     //print $output; // debug
     return $output;
}

if (!is_admin()) {
     add_shortcode('test', 'friendly_loop_shortcode' );
}


Korkarım işe yaramadı.
john joe

ne yanlış gitti? Denedim ve cevabı güncelledim
offroff

8

Eklediğiniz dosya aslında HTML'yi yansıtıyor. Örneğin

<?php
 //Some PHP
 echo 'test';
 //Some more PHP
 ?>

Aynıdır

<?php
 //Some PHP 
 ?>
 test
<?php
 //Some more PHP
 ?>

Her ikisi de iade yerine hemen yazdırılır. Yazdırıldığından beri sayfa içeriğinden önce görünür. İçeriğe eklenmesi için bir şeyler iade etmeniz gerekir .

@RutwickGangurde'nin işaret ettiği gibi - bir şablon dosyasını kısa koda eklemek olağandışıdır.


1
Teşekkürler, bunu bilmiyordum. Yani her şeyi bir değişkene koyup geri vermeliyim? Bir şablon dosyasını dahil etmeye gelince - tema kullanıcılarının temayı özelleştirmelerini mümkün olduğunca kolaylaştırmak ve kök tema dizininden iç içe büyük bir kısa kod dosyasına sahip olmak onlar için ideal değil.
john joe

@ Offroff'un cevabına bakın - işe yaramalı
Stephen Harris

1
" iyi tema kullanıcıları tema özelleştirmek için mümkün olduğunca kolaylaştırmak istiyorum " - Sadece kaç soyutlama katmanı gerekli? Kısa kodun içinde özel bir şablon dosyanız var. Bunun kullanıcılar için işleri nasıl kolaylaştırdığını anlamıyorum. Tüm yayınlara statik içerik ekleme yeteneği sağlamak istiyorsanız dynamic_sidebar(), Döngü içinde bir tanım tanımlamanız ve kullanıcıların Widget eklemesine izin vermeniz yeterlidir.
Chip Bennett

Tema kullanıcılarının çoğu, ön uçtaki basit bir css sınıfını değiştirmek için büyük bir kısa kod dosyası aracılığıyla trol etmek zorunda kalmayacaklar. Standart loop-name.php sistemini kullanarak her şeyi parçalarsam, ihtiyaç duyduklarını bulmaları çok daha hızlıdır. İdeal değilim ama onları mutlu etmeliyim;)
john joe

Çok iyi açıklanmış;
Diego Somar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.