Tôi đang làm việc trên một chủ đề con, tôi đặc biệt không muốn ghi đè các tệp mẫu chính để duy trì tính đơn giản của chủ đề con cũng như giảm thiểu số lượng mã và bảo trì theo thời gian.
Trong vòng lặp, mẫu index.php trong chủ đề gốc sử dụng:
get_template_part( 'content' );
Điều này sẽ mang đến content.php , tôi đang tìm cách để nó hoạt động giống get_template_part( 'content', get_post_format() );
hoặc tương tự hơn để mang các mẫu khác nhau như content-sid.php , v.v., mà không tạo ra một tệp index.php trong chủ đề con để ghi đè lên cha mẹ cho một thay đổi dòng duy nhất.
get_template_part()
bao gồm:
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);
}
Vì vậy, có một hành động có sẵn, trong trường hợp của tôi được gọi là get_template_part_content
Tôi có thể nối vào hành động bằng một cái gì đó như:
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);
}
}
Điều này rõ ràng dẫn đến sự trùng lặp bài đăng, một từ chức năng hooked của tôi, có thể hiển thị mẫu mong muốn và cái khác từ locate_template
cuộc gọi bình thường trongget_template_part()
Tôi đang gặp khó khăn khi tìm một cách để thực hiện điều này mà không trùng lặp, hoặc không có kết thúc hiển thị trang ngay sau khi mẫu phân phát một phần của tôi bằng cách làm một cái gì đó ngu ngốc như một break
hoặcexit