我正在处理一个子主题,我强烈建议不要重写主模板文件,以保持子主题的简单性,并随着时间的推移尽量减少代码量和维护量。
在循环中,索引。父主题中的php模板使用:get_template_part( \'content\' );
这将带来内容。php,我希望它的行为更像get_template_part( \'content\', get_post_format() );
或类似的,以便引入不同的模板,例如内容。php等,而不创建索引。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()
我很难找到一种方法来实现这一点,而不需要重复,或者在完成模板部分后不需要立即结束页面渲染,只需执行一些愚蠢的操作,例如break
或exit