このadd_image_size( $name, $width, $height, $crop )
関数は、同じを使用して複数の呼び出しを処理するのに十分なほど優雅$name
です。既存の値を単に上書きします:
$_wp_additional_image_sizes[$name] = array( 'width' => absint( $width ), 'height' => absint( $height ), 'crop' => (bool) $crop );
だから、すべてはあなたがカスタム画像サイズの親テーマの定義をオーバーライドするために必要なことを意味していることと、そのに保証することにあるとお電話add_image_size()
火災をした後、親テーマのコール。
親テーマがそのようにすると仮定します:
function parent_theme_setup() {
add_image_size( 'name', 500, 200, true );
add_image_size( 'new-name', 400, 300, true );
}
add_action( 'after_setup_theme', 'parent_theme_setup' );
次に、親テーマのadd_image_size()
呼び出しがafter_setup_theme
デフォルトの優先度(つまり10
)でフックで起動します。
(注:コールがコールバックにラップされていない場合、plugins_loaded
フックで優先的に起動します10
。)
重要な部分は次のとおりです。子テーマのfunctions.php
ファイルは親テーマの前に解析されるため、同じフックを使用してadd_image_size()
呼び出しを起動すると、親テーマのadd_image_size()
呼び出しによってオーバーライドされます。
解決策は、後のフックまたはより低い優先度を使用して、子テーマのadd_image_size()
呼び出しが親テーマの呼び出しの後に実行されるようにすることです。
これは、親テーマが呼び出しを起動する方法に関係なく、トリックを実行する必要があります。
function child_theme_setup() {
add_image_size( 'name', 400, 300, true );
}
add_action( 'after_setup_theme', 'child_theme_setup', 11 );
注我々は、同じ使用することをafter_setup_theme
フックしますが、使用して優先度の低い(すなわち11
代わりの10
優先順位で始まる)優先順位(高い数値を下げるために)優先度の高い(数字が小さいものから順に。コールバックの火を0
。優先順位にフックコールバックは非常に11
発生します後 priorityにフックされたコールバック10
。
また、after_setup_theme
フック自体がフックの後に起動するplugins_loaded
ため、親のテーマが_doing_it_wrong()
適切なコールバックでそのような呼び出しをラップせず、適切なフックにフックされている場合でも、このコールバックは親テーマをオーバーライドします。
add_image_size()
呼び出しは裸で座っているだけですfunctions.php
か、それともコールバック内に適切にラップされ、フックされていafter_setup_theme
ますか?質問に答えるためにどれが重要かを知る。