La add_image_size( $name, $width, $height, $crop )
función es lo suficientemente elegante como para manejar múltiples llamadas usando la misma $name
. Simplemente sobrescribe el valor existente :
$_wp_additional_image_sizes[$name] = array( 'width' => absint( $width ), 'height' => absint( $height ), 'crop' => (bool) $crop );
Eso significa que todo lo que necesita hacer para anular la definición del Tema principal del tamaño de imagen personalizado es asegurarse de que su llamada se add_image_size()
active después de la llamada del Tema principal .
Suponiendo que el Tema principal lo haga así:
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' );
Luego, la add_image_size()
llamada del Tema principal se activa en el after_setup_theme
gancho, en la prioridad predeterminada (es decir 10
).
(Nota: si las llamadas no están envueltas en una devolución de llamada, entonces se disparan en el plugins_loaded
gancho, con prioridad 10
).
Aquí está la parte crítica: el functions.php
archivo del tema secundario se analiza antes que el tema principal , por lo que si usa los mismos ganchos para disparar sus add_image_size()
llamadas, las add_image_size()
llamadas del tema primario lo anularán .
La solución es utilizar un enlace posterior o una prioridad inferior , para garantizar que la add_image_size()
llamada del Tema secundario se active después del Tema principal.
Esto debería hacer el truco, independientemente de cómo el Tema principal active sus llamadas:
function child_theme_setup() {
add_image_size( 'name', 400, 300, true );
}
add_action( 'after_setup_theme', 'child_theme_setup', 11 );
Tenga en cuenta que usamos el mismo after_setup_theme
gancho, pero utilizamos una prioridad más baja (es decir, en 11
lugar de 10
. Las devoluciones de llamada se activan en orden de prioridad más alta (número más bajo) a prioridad más baja (número más alto), comenzando con la prioridad0
. Entonces, una devolución de llamada enganchada en prioridad 11
se disparará después de una devolución de llamada enganchada en prioridad 10
.
Tenga en cuenta también que el after_setup_theme
gancho en sí mismo se activa después del plugins_loaded
gancho, por lo que esta devolución de llamada seguirá anulando el tema principal, incluso si el tema principal _doing_it_wrong()
no está envolviendo dichas llamadas en una devolución de llamada adecuada, enganchado en un enlace apropiado.
add_image_size()
llamadas simplemente se sientan desnudasfunctions.php
, o se envuelven correctamente dentro de una devolución de llamada y se enganchanafter_setup_theme
? Saber cuál es fundamental para responder a su pregunta.