Estou trabalhando em um tema filho. Prefiro não substituir os arquivos principais de modelo para manter a simplicidade do tema filho e 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á o content.php , pretendo que ele se comporte de maneira semelhante get_template_part( 'content', get_post_format() );
ou semelhante a fim de trazer modelos diferentes, como content-apart.php , etc, sem criar um index.php no tema filho para substituir 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 me conectar à 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);
}
}
Obviamente, isso resulta em pós-duplicação, uma da minha função conectada, que pode exibir o modelo desejado e a outra da locate_template
chamada normal emget_template_part()
Estou tendo problemas para encontrar uma maneira de fazer isso sem duplicação ou sem renderizar a página final logo após servir a parte do meu modelo, fazendo algo estúpido, como um break
ouexit
fonte
Respostas:
Não há gancho para fazer isso. Copie o index.php para o tema filho e faça a alteração de linha única. Além disso, diga ao autor do tema principal que ele deve fazer a mesma alteração em seu tema, para flexibilidade.
fonte
ob_start
lo dentro dele eob_end
em algum momento posterior para que seja executado, mas nunca ecoado, o que geralmente é bom o suficiente. Ou você pode usar exit () para forçar o encerramento do PHP (depois de adicionar manualmente tudo o que ainda está faltando: rodapé, etc.)Eu acho que não é exatamente possível da maneira que você deseja alcançar. É realmente irritante não conseguir um filtro para alterar os nomes dos arquivos de modelo :(
Eu tenho uma solução alternativa sobre isso. Vamos usar
content.php
para a comparação.Eu não usei o segundo argumento da
get_template_part
função, mas passei o sufixo no primeiro argumento para evitar chamadas infinitas nocontent.php
arquivo, se não houver nenhum'content-'. $format
arquivo.fonte
Bem, há SOLUÇÃO :
mas pense com cuidado: em qual gancho você deve inserir essa ação ... para obter manualmente a localização, o uso, ou seja,
locate_template('content-header.php', false);
fonte
Se você deseja extrair um arquivo chamado content-apart.php, você chama a função assim:
O segundo parâmetro é o nome do arquivador após o hífen. Se o seu arquivo estiver em um subdiretório (templates / content-side.php):
É isso que você está procurando fazer?
fonte