Я работаю над дочерней темой, я настоятельно предпочитаю не переопределять основные файлы шаблонов, чтобы сохранить простоту дочерней темы, а также минимизировать объем кода и обслуживания с течением времени.
В цикле шаблон index.php в родительской теме использует:
get_template_part( 'content' );
который привнесет в content.php , я смотрю, чтобы он вел себя более похожим get_template_part( 'content', get_post_format() );
или похожим, чтобы добавить различные шаблоны, такие как content-aside.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()
У меня проблемы с поиском способа сделать это без дублирования или без завершения рендеринга страницы сразу после обработки части шаблона, выполнив что-то глупое, например, break
илиexit