Saya sedang mengerjakan tema anak, saya sangat memilih untuk tidak menimpa file templat utama untuk menjaga kesederhanaan tema anak serta meminimalkan jumlah kode dan pemeliharaan dari waktu ke waktu.
Dalam loop, templat index.php dalam tema induk menggunakan:
get_template_part( 'content' );
yang akan membawa content.php , saya ingin membuatnya berperilaku lebih mirip get_template_part( 'content', get_post_format() );
atau serupa untuk membawa berbagai templat seperti content-samping.php , dll, tanpa membuat index.php pada tema anak untuk menimpa induk untuk perubahan satu baris.
get_template_part()
terdiri dari:
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);
}
Jadi ada tindakan yang tersedia, dalam kasus saya dipanggil get_template_part_content
Saya dapat menghubungkan ke tindakan dengan sesuatu seperti:
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);
}
}
Ini jelas menghasilkan duplikasi pos, satu dari fungsi doyan saya, yang dapat menampilkan template yang diinginkan, dan yang lainnya dari locate_template
panggilan normal diget_template_part()
Saya mengalami kesulitan menemukan cara untuk melakukan ini tanpa duplikasi, atau tanpa mengakhiri render halaman tepat setelah melayani bagian templat saya dengan melakukan sesuatu yang bodoh seperti break
atauexit