ส่วนเทมเพลตภายในรหัสย่อผลลัพธ์ที่ไม่คาดคิด
ฉันพยายามเรียกส่วนเทมเพลตผ่านรหัสย่อ ฉันได้อ่านทั้งหมดเกี่ยวกับวิธีการทำสิ่งนี้ซ้ำแล้วซ้ำอีกบนไซต์นี้และหลังจากได้ลองทำสิ่งต่างๆหลายอย่างแล้วก็ยังไม่สามารถเรียกสตริงเวลา php echo แบบง่ายๆได้ ชื่อไฟล์คือ test-one.phpนี่คือสิ่งที่ฉันได้ลอง:
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');
รหัสส่วนเทมเพลตคือ
<?php
echo "Current as of <br> ".date("m-d-Y h:i:sa");
ดูเหมือนว่ามันควรจะทำงานไม่ใช่เหรอ? ฉันผิดตรงไหน?
คำตอบ
get_template_part()
ฟังก์ชั่นไม่ถือว่าชื่อไดเรกทอรีใด ๆ ที่คุณต้องชัดเจนจัดหา นอกจากนี้ยังสัมพันธ์กับไดเร็กทอรีธีมที่ใช้งานอยู่ ดังนั้นในหลาย ๆ ตัวอย่างของคุณจึงมองหาแม่แบบในรูทของธีมที่ใช้งานอยู่ รูปแบบที่ถูกต้องจะเป็น:
get_template_part( 'template-parts/test-one' );
หากคุณต้องการคุณสามารถเปลี่ยนชื่อโฟลเดอร์เป็นinc
หรือincludes
- ตามอำเภอใจ คุณต้องแสดงการเปลี่ยนแปลงนี้ในการเรียกใช้ฟังก์ชัน
หมายเหตุด้านข้าง WordPress อนุญาตให้คุณส่งผ่านพารามิเตอร์ที่ 2 และจะมองหาไฟล์ที่เชื่อมต่อด้วยเส้นประ ตัวอย่างเช่นสิ่งนี้จะใช้งานได้:
get_template_part( 'template-parts/test', 'one' );
ข้อดีของสิ่งนี้คือช่วยให้คุณมี "ประเภท" ของส่วนหนึ่ง ๆ คุณอาจมีcontent-post.php
ไฟล์เพื่อส่งออกเนื้อหาโพสต์ของคุณและไฟล์content-page.php
เพื่อส่งออกเนื้อหาหน้าของคุณ จากนั้นในธีมของคุณคุณสามารถเรียกใช้เทมเพลตของคุณโดย:
get_template_part( 'template-parts/content', $post->post_type );
เพียงแค่ช่วยให้มีไดนามิกมากขึ้น
หมายเหตุด้านอื่น ทุกครั้งที่คุณมีปัญหากับฟังก์ชันประเภทนี้คุณสามารถใช้ได้ตลอดเวลา:
add_action( 'init', function() {
$template = locate_template( $template_string_here ); printf( '<pre>%s</pre>', print_r( $template, 1 ) );
die( 'end' );
} );
สิ่งนี้จะแสดงเส้นทางเทมเพลตที่ WordPress พยายามเข้าถึงเทมเพลตโดย