ฉันกำลังทำงานกับธีมลูกฉันไม่ต้องการแทนที่ไฟล์เทมเพลตหลักเพื่อรักษาความเรียบง่ายของธีมลูกรวมทั้งลดจำนวนรหัสและการบำรุงรักษาเมื่อเวลาผ่านไป
ในลูปเท็มเพลต index.php ในธีมพาเรนต์ใช้:
get_template_part( 'content' );
ซึ่งจะนำมาในcontent.phpฉันต้องการให้มันมีลักษณะเหมือนget_template_part( 'content', get_post_format() );
หรือคล้ายกันมากขึ้นเพื่อที่จะนำเทมเพลตต่างๆเช่นcontent-apart.phpเป็นต้นโดยไม่ต้องสร้างindex.phpในธีมลูกเพื่อเขียนทับ ผู้ปกครองสำหรับการเปลี่ยนแปลงบรรทัดเดียว
get_template_part()
ประกอบด้วย:
function get_template_part( $slug, $name = null ) {
do_action( "get_template_part_{$slug}", $slug, $name );
$templates = array();
$name = (string) $name;
if ( '' !== $name )
$templates[] = "{$slug}-{$name}.php";
$templates[] = "{$slug}.php";
locate_template($templates, true, false);
}
จึงมีการดำเนินการในกรณีของฉันที่เรียกว่า get_template_part_content
ฉันขอเชื่อมโยงการกระทำกับสิ่งที่ชอบ:
add_action( 'get_template_part_content', 'child_post_styles', 10, 2 );
function child_post_styles ( $slug, $name ) {
if( false == $name ){
$name = get_post_format();
$templates = array();
if ( '' !== $name )
$templates[] = "{$slug}-{$name}.php";
$templates[] = "{$slug}.php";
locate_template($templates, true, false);
}
}
เห็นได้ชัดว่าส่งผลให้เกิดการโพสต์ซ้ำหนึ่งจากฟังก์ชั่นติดยาเสพติดของฉันซึ่งสามารถแสดงแม่แบบที่ต้องการและอื่น ๆ จากการlocate_template
โทรปกติในget_template_part()
ฉันมีปัญหาในการหาวิธีที่จะทำสิ่งนี้ให้สำเร็จโดยไม่ต้องทำซ้ำหรือไม่แสดงหน้าจบหลังจากที่ให้บริการส่วนเทมเพลตของฉันด้วยการทำสิ่งที่โง่เช่น a break
หรือexit