"Includes"フォルダーの親テーマにあるtheme.phpファイルを変更し、 "Includes"フォルダーの子テーマにも配置しましたが、変更が含まれていません。 WordPressは、親テーマフォルダーに配置されたファイルのみを読み取ります。これはなぜですか?ファイルが子テーマフォルダーにある場合、変更内容はどのように含める必要がありますか?または、方法functions.phpのinclude/theme.phpから関数をオーバーライドできますか?再宣言エラーがあるため、関数をオーバーライドできません。
編集7.05.2020
@JacobPeattie-どうもありがとう。私は読みました。理解できたか分からない。私の英語はまだあまり上手ではありません。私はfunctions.phpにそう書いています:
if ( ! function_exists( 'bimber_capture_entry_featured_media' ) ) :
function bimber_capture_entry_featured_media_my_modifications( $args ) {
//function code with my modifications
}
endif;
うまく追加されましたが、機能しません。
多分それは有用な情報でしょう:
ファイルtheme.phpは、parentTheme/includesフォルダーのfunctions.phpファイルに次のように追加されます:require_once BIMBER_INCLUDES_DIR . 'theme.php';
関数は別の関数の「エコー」によって呼び出されます。
ここにphpファイルがあります:
子テーマのbimber_capture_entry_featured_media
を置き換えたい。あなたが私たちに与えたtheme.phpファイルでは、これがbimber_render_entry_featured_media
から1つの場所でのみ呼び出され、呼び出しがフィルターにラップされていることがわかります:
if ( apply_filters( 'bimber_render_entry_featured_media', true, $args ) ) {
echo bimber_capture_entry_featured_media( $args );
}
フィルターからfalseを返すと、デフォルトコードの呼び出しがキャンセルされます。それが本当であると仮定すると、フィルターガードなしでこの関数を呼び出すものは他にないので、代わりにあなたができることは
bimber_capture_entry_featured_media_my_modifications
を呼び出し、結果をエコーします例えば(未試験)
function bimber_render_entry_featured_media_filter_my_modifications( $flag, $args ) {
if ($flag) {
echo bimber_capture_entry_featured_media_my_modifications( $args );
}
return false;
}
add_filter( 'bimber_render_entry_featured_media',
'bimber_render_entry_featured_media_filter_my_modifications', 10, 2 );
ただし、元のメソッドにもたくさんのフックがあるため、実行しようとしていることに応じて、メソッドを完全にオーバーライドするのではなく、それらを使用して動作を変更できる場合があります。