web-dev-qa-db-fra.com

Tous les fichiers du thème enfant remplacent-ils le parent?

Je suis curieux de savoir si d'autres fichiers de code PHP outre le fichier functions.php, WP et les fichiers de modèle style.css d'un thème enfant remplacent en réalité le même fichier dans un parent.

Je travaille avec un client qui a un thème avec un support de thème enfant, cependant, il n'y a pas de hooks ou d'actions à décharger pour les fonctions que je souhaite remplacer. Vous recherchez un moyen propre d'effectuer cette substitution avec un code personnalisé qui ne sera pas écrasé lors de la mise à niveau.

3
emaynard

Cela dépend entièrement de a) les fonctions et les fichiers de modèle dont vous parlez, et b) comment ces fonctions sont définies ou appelées fichiers de modèle dans le thème parent.

Si le thème parent utilise get_template_part(), alors vous êtes en or. Si le thème parent utilise get_stylesheet_directory_uri() ou STYLESHEETPATH, vous pouvez le remplacer, avec des avertissements. Si le thème parent utilise get_template_directory_uri() ou TEMPLATEPATH, vous traverserez des moments difficiles.

Avec les fonctions, si le thème parent encapsule les fonctions dans une condition function_exists(), vous pouvez simplement écraser ces fonctions en les déclarant dans le thème enfant. Avec les crochets, vous pouvez simplement remove_action ou remove_filter.

5
Chip Bennett

Normalement, tous les fichiers sont "override" -able ( mais pas le fichier functions.php ). La règle est: le thème enfant est chargé en premier, puis le thème parent.

Si vous souhaitez remplacer une fonction dans le fichier functions.php, vous devez l'envelopper

if ( ! function_exists('some_function_name') ) { 
    function some_function_name() { /* do stuff */ }
}

Sinon, ce n'est pas possible.

1
kaiser