web-dev-qa-db-ja.com

27のテーマでtemplate-tags.phpをオーバーライドするにはどうすればいいですか?

TwentySeventeenテーマから子テーマを作成しましたが、うまくいきそうです。

私は私の子供のテーマで一致するフォルダと私自身のcontent.phpを作成することによってcontent.phpファイルを上書きすることができます。

/template-parts/post/content.php

...正常に動作します。

しかし、私は次のようにして単一の投稿のヘッダーのメタタグを上書きするために同じことをやろうとしました

/inc/template-tags.php

...そしてtemplate-tags.phpの関数(例:twentyseventeen_posted_on())は、私が期待していたようにメインテーマのバージョンを上書きしません。

何がおかしいのですか?

2
jchwebdev

template-tags.phpファイルを見ると、次のようになっているでしょう。

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;

そのコードの最初の行のifステートメントは、与えられた関数がすでに定義されているかどうかを調べる責任があります。

それであなたはそれについて何ができる?あなたの子テーマでtwentyseventeen_posted_onと呼ばれるあなた自身の関数を定義するだけで、あなたの関数が使用されるものになるでしょう。

重要:TwentySeventeenが独自のバージョンを定義する前に、自分の関数を定義することが重要です。

2