Kısa kod içinde şablon parçası, beklenmeyen sonuç
Kısa kod aracılığıyla bir şablon parçasını çağırmaya çalışıyorum. Bunu bu sitede defalarca nasıl yapacağımı okudum ve yine de birkaç şeyi denedikten sonra hala basit bir php eko zaman dizgisi çağıramıyorum. Dosya adı test-one.php. İşte denediğim şey:
function test_2( $attr ) {
ob_start();
get_template_part( 'test', 'one' );
return ob_get_clean();
}
add_shortcode('test2', 'test_2');
function test_2( $attr ) {
ob_start();
get_template_part( 'test-one' );
return ob_get_clean();
}
add_shortcode('test2', 'test_2');
function test_2( $attr ) {
ob_start();
get_template_part( 'wp-content/themes/theme-name/template-parts/test-one' );
return ob_get_clean();
}
add_shortcode('test2', 'test_2');
Şablon parça kodu
<?php
echo "Current as of <br> ".date("m-d-Y h:i:sa");
Çalışması gerekiyor gibi görünüyor, değil mi? Nerede yanlış yapıyorum?
Yanıtlar
get_template_part()
İşlevi açıkça tedarik zorunda herhangi bir dizin adını üstlenmez. Aynı zamanda aktif tema diziniyle de ilgilidir. Örneklerinizin çoğunda, aktif temanızın kökündeki şablonu arıyordu. Doğru format şu şekilde olacaktır:
get_template_part( 'template-parts/test-one' );
İsterseniz, klasörü inc
veya olarak yeniden adlandırabilirsiniz includes
- bu isteğe bağlıdır. Bu değişikliği işlev çağrısına yansıtmanız yeterlidir.
Bir yan not olarak, WordPress 2. bir parametreyi geçmenize izin verir ve bir tire ile birleştirilen dosyaları arayacaktır. Örneğin, bu da işe yarayacaktır:
get_template_part( 'template-parts/test', 'one' );
Bunun yararı, belirli bir parçanın birden çok "türüne" sahip olmanıza izin vermesidir. content-post.php
Yazı içeriğinizin content-page.php
çıktısını almak ve sayfa içeriğinizi çıkarmak için bir dosyanız olabilir . Ardından temanızda şablonunuzu şu şekilde arayabilirsiniz:
get_template_part( 'template-parts/content', $post->post_type );
Sadece biraz daha dinamik olmasına izin veriyor.
Başka bir yan not. Bu tür işlevlerle ne zaman sorun yaşarsanız her zaman kullanabilirsiniz:
add_action( 'init', function() {
$template = locate_template( $template_string_here ); printf( '<pre>%s</pre>', print_r( $template, 1 ) );
die( 'end' );
} );
Bu, WordPress'in şablona erişmeye çalıştığı şablon yolunu çıkaracaktır.