親テーマのfunctions.php後に子テーマの関数を実行させる

親テーマのfunctions.phpで実行されている関数の後に、子テーマのfunctions.phpの関数を実行したい。

自分がやりたかったことをそのまま述べると、親テーマで設定されていたコンテンツの横幅定数(GLOBALS['content_width'])を変えたかったんです。

functions.phpの実行順番は子テーマ>親テーマの順になっているので、普通のやり方だとオーバーライドなども出来ないんですね。以下は自分が対応した例になります。

親テーマの後に子テーマのfunctions.phpの関数を実行

「after_setup_theme」フックを使います。

親テーマの実装によりますが、「after_setup_theme」フックの第三引数の数値を10より大きい値に指定すると大方上手く行くでしょう(デフォルトが10なので)。この数値はプライオリティ(優先順=実行順)なので、親テーマでもし値が設定されていたらそれよりも大きい数値を指定する必要があります(after_setup_themeフックに引っ掛けているプログラムにアクセスする場合です)。

 

参考になったページ

以下のページが参考になりました。ほぼ同じコードですが、プライオリティの指定をしなければならなかったのでメモとして残すことにしました。

【Stinger5カスタマイズ】functions.phpのカスタマイズを子テーマ側で実施する方法 | ブログのちから

コメント

「何かそこ違うよ」「こうした方が良い」っていう部分があったら指摘して頂けると嬉しいです。

トラックバック

トラックバックは現在ありません。

Trackback: https://increment-log.com/setup-after-parent-theme/trackback/