web-dev-qa-db-fra.com

Comment remplacer template-tags.php dans le thème vingt-sept

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?

2
jchwebdev

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.

2
Krzysiek Dróżdż