Je travaille sur un thème enfant, je préfère fortement ne pas remplacer les fichiers de modèle principaux afin de maintenir la simplicité du thème enfant ainsi que de minimiser la quantité de code et de maintenance au fil du temps.
Dans la boucle, le modèle index.php du thème parent utilise:
get_template_part( 'content' );
qui apportera content.php , je cherche à ce qu'il se comporte plus comme get_template_part( 'content', get_post_format() );
ou similaire afin d'apporter différents modèles tels que content-apart.php , etc., sans créer un index.php dans le thème enfant pour écraser le parent pour un changement de ligne unique.
get_template_part()
consiste en:
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);
}
Il y a donc une action disponible, dans mon cas appelé get_template_part_content
Je peux accrocher à l'action avec quelque chose comme:
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);
}
}
Il en résulte évidemment une post-duplication, l'une de ma fonction hookée, qui peut afficher le modèle souhaité, et l'autre de l' locate_template
appel normal dansget_template_part()
J'ai du mal à trouver un moyen d'accomplir cela sans duplication, ou sans terminer le rendu de page juste après avoir servi ma partie de modèle en faisant quelque chose de stupide comme un break
ouexit