J'ai créé un thème pour enfants à partir du thème TwentySeventeen et il semble fonctionner.
Je peux remplacer le fichier content.php en créant un dossier correspondant et mon propre contenu.php dans mon thème enfant.
/template-parts/post/content.php
... fonctionne bien.
Cependant, j'ai essayé de faire la même chose pour remplacer les balises metta dans l'en-tête d'un seul post en procédant comme suit
/inc/template-tags.php
... et les fonctions de template-tags.php (par exemple, twentyseventeen_posted_on ()) ne sont pas en train de remplacer la version du thème principal, comme je m'y attendais.
Qu'est-ce que je fais mal?
Si vous regardez le fichier template-tags.php
, vous verrez quelque chose comme ça:
if ( ! function_exists( 'twentyseventeen_posted_on' ) ) :
/**
* Prints HTML with meta information for the current post-date/time and author.
*/
function twentyseventeen_posted_on() {
// Get the author name; wrap it in a link.
$byline = sprintf(
/* translators: %s: post author */
__( 'by %s', 'twentyseventeen' ),
'<span class="author vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) . '">' . get_the_author() . '</a></span>'
);
// Finally, let's write all of this to the page.
echo '<span class="posted-on">' . twentyseventeen_time_link() . '</span><span class="byline"> ' . $byline . '</span>';
}
endif;
L'instruction if dans la première ligne de ce code est chargée de vérifier si une fonction donnée est déjà définie.
Alors, que pouvez-vous faire à ce sujet? Définissez simplement votre propre fonction appelée twentyseventeen_posted_on
dans votre thème enfant et votre fonction sera celle qui est utilisée.
Important: Il est essentiel que vous définissiez votre fonction avant que TwentySeventeen définisse sa propre version.