web-dev-qa-db-fra.com

Comment substituer functions.php dans le thème de l'enfant?

J'ai un thème et j'ai besoin de remplacer certaines parties spécifiques de son comportement spécifiquement sur le fichier functions.php. Je sais que la meilleure pratique consiste à placer ceci dans le thème enfant en plaçant un functions.php personnalisé. Maintenant, cela fait partie du fichier original:

function mytheme_setup() {
    ...
    add_image_size( 'mytheme-l-thumbs' , 750 , 423 , true);
    add_image_size( 'mytheme-m-thumbs' , 555 , 313 , true);
    add_image_size( 'mytheme-s-thumbs' , 450 , 254 , true);
    add_image_size( 'mytheme-square-thumbs' , 750 , 750 , true);
    add_image_size( 'mytheme-nocrop-thumbs' , 750 , 1500 , false);

}

add_action( 'after_setup_theme', 'mytheme_setup' );

Et je veux remplacer chaque add_image_size en définissant crop sur false sur mon thème enfant. J'ai essayé en copiant et collant la fonction sur le thème de l'enfant, mais je me suis retrouvé avec cette erreur:

Impossible de redéclarer mytheme_setup () (précédemment déclaré dans /themes/mytheme-child/functions.php:11) dans /themes/mytheme/functions.php à la ligne 88

Comment je peux faire ça?

3
ReynierPM

Quand une fonction est accrochée, il est facile de changer cela dans un thème enfant. Ce que tu dois faire c'est

  • Supprimer la fonction de rappel d'origine

  • Copiez la fonction dans le thème de votre enfant et renommez-la.

  • Faites vos personnalisations au besoin

  • Rehook votre fonction de rappel

Vous pouvez essayer ce qui suit:

// Remove the callback function from the hook
remove_action( 'after_setup_theme', 'mytheme_setup' );

// Copy the function, rename and do what you need
function my_new_callback()
{
    // Modify what you need
}

// Rehook your custom callback
add_action( 'after_setup_theme', 'my_new_callback' );
3
Pieter Goosen