【WordPress】テーマの inc/template-tags.php 内関数を子テーマで使いたい

(お約束)ご利用は自己責任でお願いします

テーマをカスタマイズするときには子テーマを使うのはもはや常識です。

子テーマについて詳しくはこちら。

さて親テーマのディレクトリ直下にあるheader.phpのようなファイルの場合、子テーマディレクトリにコピーしてきて書き換えれば機能しますが、inc/template-tags.phpをカスタマイズしようと子テーマディレクトリ内にinc/template-tags.phpを作っても機能しません。

理由は後述(※)しますが、そんなときは子テーマのfunctions.php内にカスタマイズしたい関数をコピペしてきて書き換えれば機能します。

例えば親テーマtwentyfifteenのinc/template-tags.php内には以下のような関数twentyfifteen_comment_navがあります。

function twentyfifteen_comment_nav() {
	// Are there comments to navigate through?
	if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) :
	?>
	<nav class="navigation comment-navigation" role="navigation">
		<h2 class="screen-reader-text"><?php _e( 'Comment navigation', 'twentyfifteen' ); ?></h2>
		<div class="nav-links">
			<?php
				if ( $prev_link = get_previous_comments_link( __( 'Older Comments', 'twentyfifteen' ) ) ) :
					printf( '<div class="nav-previous">%s</div>', $prev_link );
				endif;

				if ( $next_link = get_next_comments_link( __( 'Newer Comments', 'twentyfifteen' ) ) ) :
					printf( '<div class="nav-next">%s</div>', $next_link );
				endif;
			?>
		</div><!-- .nav-links -->
	</nav><!-- .comment-navigation -->
	<?php
	endif;
}

これを書き換えたい、自分でカスタマイズしたいときには、twentyfifteen_comment_navをまるまる子テーマのfunctions.phpにコピペしてからカスタマイズします。もちろん関数名はそのまま使います。

するとその子テーマのfunctions.phpに書いたtwentyfifteen_comment_navが読み込まれ、カスタマイズが成功することになります。


(※)さて、なぜ子テーマのfunctions.phpにカスタマイズしたい関数をコピーして書き換えれば機能するかというと、それは以下の引用を読んでもらうとよくわかると思います。

functions.phpの使用
style.cssと異なり、子テーマの functions.php は、親テーマの機能を上書きしません。代わりに 親の functions.php に追加して読み込まれます。(正確には、親テーマのファイルの 直前 に読み込まれます。)

この動きにより、子テーマの functions.php は親テーマの機能を変更する、賢くトラブルの無い手段を提供します。たとえば、ここでテーマにPHP関数を追加したいとします。もっとも簡単な方法はテーマの functions.php を開き、そこに関数を追加する方法でしょうが、これは賢くありません。次回テーマがアップデートされると、追加した関数は失われるためです。代替の賢い方法として、子テーマを作成し、functions.php ファイルを追加し、関数を追加します。関数はそこからでもまったく同様の働きをするだけでなく、親テーマの将来のアップデートに影響されない利点もあります。ただし親テーマのfunctions.phpのすべての内容を子テーマのfunctions.phpにコピーしないでください。

引用:子テーマについて

コメント

タイトルとURLをコピーしました