La add_image_size( $name, $width, $height, $crop )funzione è abbastanza aggraziata da gestire più chiamate usando la stessa $name. Sovrascrive semplicemente il valore esistente :
$_wp_additional_image_sizes[$name] = array( 'width' => absint( $width ), 'height' => absint( $height ), 'crop' => (bool) $crop );
Ciò significa che tutto ciò che è necessario fare per ignorare la definizione del tema principale della dimensione dell'immagine personalizzata è garantire che la chiamataadd_image_size() venga attivata dopo la chiamata del tema principale .
Supponendo che al tema principale piaccia:
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' );
Quindi la add_image_size()chiamata del tema principale si after_setup_themeattiva automaticamente, con la priorità predefinita (ad es 10.).
(Nota: se le chiamate non sono racchiuse in una richiamata, si plugins_loadedattivano in modo prioritario 10.)
Ecco la parte critica: il functions.phpfile del tema figlio viene analizzato prima del tema principale , quindi se si utilizzano gli stessi hook per attivare le add_image_size()chiamate, verranno sovrascritte dalle add_image_size()chiamate del tema principale .
La soluzione consiste nell'utilizzare un hook successivo o una priorità inferiore , per garantire che la add_image_size()chiamata del tema figlio venga attivata dopo quella del tema principale.
Questo dovrebbe fare il trucco, indipendentemente da come il tema principale genera le sue chiamate:
function child_theme_setup() {
add_image_size( 'name', 400, 300, true );
}
add_action( 'after_setup_theme', 'child_theme_setup', 11 );
Si noti che utilizziamo lo stesso after_setup_themehook, ma utilizziamo una priorità più bassa (ovvero 11invece di 10. I callback si attivano in ordine da priorità più alta (numero più basso) a priorità più bassa (numero più alto), iniziando con la priorità 0. Quindi un callback collegato alla priorità si 11attiverà dopo una richiamata agganciata alla priorità 10.
Si noti inoltre che l' after_setup_themehook stesso si attiva dopo l' plugins_loadedhook, quindi questo callback ha ancora la precedenza sul tema principale, anche se il tema principale _doing_it_wrong()non racchiude tali chiamate in un callback appropriato, collegato a un hook appropriato.
add_image_size()chiamate sono semplicemente nudefunctions.phpo sono correttamente inserite in una callback e agganciateafter_setup_theme? Sapere quale è fondamentale per rispondere alla tua domanda.