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_theme
attiva automaticamente, con la priorità predefinita (ad es 10
.).
(Nota: se le chiamate non sono racchiuse in una richiamata, si plugins_loaded
attivano in modo prioritario 10
.)
Ecco la parte critica: il functions.php
file 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_theme
hook, ma utilizziamo una priorità più bassa (ovvero 11
invece 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 11
attiverà dopo una richiamata agganciata alla priorità 10
.
Si noti inoltre che l' after_setup_theme
hook stesso si attiva dopo l' plugins_loaded
hook, 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.php
o sono correttamente inserite in una callback e agganciateafter_setup_theme
? Sapere quale è fondamentale per rispondere alla tua domanda.