Não há gancho para fazer isso. Copie o index.php para o tema filho e faça a mudança de linha única. Além disso, diga ao autor do tema pai que eles devem fazer a mesma alteração em seu tema, para flexibilidade.
Eu estou trabalhando em um tema filho, eu prefiro não substituir os principais arquivos de modelo, a fim de manter a simplicidade do tema filho, bem como minimizar a quantidade de código e manutenção ao longo do tempo.
No loop, o modelo index.php no tema pai usa:
get_template_part( 'content' );
que trará content.php , eu quero que ele se comporte mais como get_template_part( 'content', get_post_format() );
ou similar para trazer modelos diferentes como content-aside.php , etc, sem criar um index.php no tema filho para sobrescrever o pai para uma única mudança de linha.
get_template_part()
consiste em:
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);
}
Portanto, há uma ação disponível, no meu caso chamada get_template_part_content
Eu posso ligar a ação com algo como:
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);
}
}
Isso obviamente resulta em pós duplicação, uma da minha função hooked, que pode exibir o template desejado, e a outra da chamada locate_template
normal em get_template_part()
Estou com dificuldades para encontrar uma maneira de realizar isso sem duplicação ou sem terminar a renderização da página logo após exibir minha parte do modelo fazendo algo estúpido, como break
ou exit
Não há gancho para fazer isso. Copie o index.php para o tema filho e faça a mudança de linha única. Além disso, diga ao autor do tema pai que eles devem fazer a mesma alteração em seu tema, para flexibilidade.
Eu acho que não é exatamente possível do jeito que você quer alcançar. É muito chato não conseguir um filtro lá para alterar nomes de arquivos de template: (
Eu tenho uma solução nele embora. Vamos usar content.php
para a comparação.
// content.php file
$format = get_post_format();
if( '' != $format ){
get_template_part( 'content-'. $format );
}
else{
get_template_part( 'content-default' );
}
Eu não usei o segundo argumento da função get_template_part
, mas passei o sufixo no primeiro argumento para evitar chamadas infinitivas no arquivo content.php
se não houver nenhum arquivo 'content-'. $format
.
Bem, existe SOLUÇÃO :
add_action('init', function(){ remove_all_actions('get_template_part_content'); });
add_action('get_template_part_content', 'yourFunc', 99, 2 );
function yourFunc ( $slug, $name ) {
.........any codes here.............
if ($name == 'header'){
//but this will be executed before loading template... At this moment, Wordpress doesnt support any hooks for before/after LOAD_TEMPLATE...
}
}
mas pense bem, em qual gancho você deve inserir essa ação ...
para obter manualmente a localização, use, por exemplo, locate_template('content-header.php', false);
Se você quer puxar um arquivo chamado content-aside.php, você chama a função assim:
get_template_part( 'content', 'aside' );
O segundo parâmetro é o nome do arquivador após o hífen. Se o seu arquivo estiver em um subdiretório (templates / content-aside.php):
get_template_part( 'templates/content', 'aside' );
É isso que você quer fazer?