- Statut : non résolu
- Ce sujet contient 46 réponses, 3 participants et a été mis à jour pour la dernière fois par Anonyme, le il y a 10 années et 8 mois.
-
AuteurMessages
-
16 mai 2014 à 14 h 17 min #951930
Bjr, donc je reviens vers ce problème.
Dans mon fichier, functions.php du thème enfant, il y a :<?php
/*
* Functions file
* Calls all other required files
* PLEASE DO NOT EDIT THIS FILE IN ANY WAY
*
* @package parabola
*/// variable for theme version
define (« PARABOLA_VERSION », »1.3.4″);require_once(dirname(__FILE__) . « /admin/main.php »); // Load necessary admin files
//Loading include files
require_once(dirname(__FILE__) . « /includes/theme-functions.php »); // Misc functions
?>
Et la voici le message d’erreur :
Warning: require_once(/homepages/9/d308989148/htdocs/W_Press_TYF/wp-content/themes/parabola-child-01/includes/custom-styles.php) [function.require-once]: failed to open stream: No such file or directory in /homepages/9/d308989148/htdocs/W_Press_TYF/wp-content/themes/parabola-child-01/admin/main.php on line 7
Fatal error: require_once() [function.require]: Failed opening required ‘/homepages/9/d308989148/htdocs/W_Press_TYF/wp-content/themes/parabola-child-01/includes/custom-styles.php’ (include_path=’.:/usr/lib/php5′) in /homepages/9/d308989148/htdocs/W_Press_TYF/wp-content/themes/parabola-child-01/admin/main.php on line 7
Si je rajoute dans le dossier includes du theme enfant, le fichier custom-styles.php, il me reste cette erreur :
Fatal error: Cannot redeclare parabola_get_theme_options() (previously declared in /homepages/9/d308989148/htdocs/W_Press_TYF/wp-content/themes/parabola-child-01/admin/main.php:24) in /homepages/9/d308989148/htdocs/W_Press_TYF/wp-content/themes/parabola/admin/main.php on line 28
Et là je sèche!!!
16 mai 2014 à 15 h 19 min #951931AnonymeInvitéMaître WordPress34072 contributionsCe message a été supprimé suite à la demande de l’auteur.
16 mai 2014 à 15 h 45 min #951932Vous êtes dans un thème enfant.
Vous avez recopié dans ce thème enfant le fichier functions.php du thème parent, avec un appel à des fichiers qui se trouvent dans le répertoire du thème parent
/ variable for theme version
define (« PARABOLA_VERSION », »1.3.4″);
require_once(dirname(__FILE__) . « /admin/main.php »); // Load necessary admin files
//Loading include files
require_once(dirname(__FILE__) . » « ); // Misc functionsOr dirname(__FILE__) . fait référence au répertoire où se trouve le fichier php … donc le répertoire du thème enfant. Sanf si vous avez recréé les répertoires et les fichiers /admin/main.php et /includes/theme-functions.php dans le thème enfant, il ne les trouve pas, et c’est ce qu’il vous explique
16 mai 2014 à 15 h 53 min #951933Oui, j’ ai recréé les répertoires dans le thème enfant! N’est pas une bonne méthode?
16 mai 2014 à 17 h 26 min #951934Les répertoires ?
C’est inutile.
Si vous n’y remettez pas les fichiers, cela donne ce genre d’erreurs
Si vous y recopiez les fichiers, ça va coincer autrement si ce sont des fichiers avec des fonctions.Le fichier functions.php va appeler les fichiers dans le thème parent de toute façon.
Si vous voulez modifier une fonction, il ne faut pas modifier le fichier (il y aura un conflit de nom) mais la réécrire avec un nouveau nom, vous pouvez la mettre simplement dans le functions.php du thème.A priori admin/main.php c’est le fichier qui permet de gérer les options dans l’admin.
16 mai 2014 à 21 h 18 min #951935Donc, je reprends, j’ ai un theme, il y a un fichier functions.php et un fichier theme-functions.php (dans un dossier includes).
Je fait une modif dans le theme-functions.php MAIS cette modif esr effacée à chaque mise à jour du thème.
Donc je crée un theme-enfant, il contient un fichier style.css (normal).
Je souhaites donc créer un theme-functions dans le thème enfant afin de garder mes modifs.
Voilà!16 mai 2014 à 21 h 28 min #951936Donc tu ne créées pas un fichier theme-functions.php parce que de TOUTE façons, le fichier theme-functions.php du theme parent sera chargé
Tu copies dans ton fichier functions.php du thème enfant les fonctions que tu veux modifier de theme-functions.php
Tu leur donnes un nom différent
Tu modifies ce que tu veux dans la fonction
Et dans les autres fichiers du thème (single.php, index.php, etc…. je ne sais pas) tu remplaces l’appel à la fonction du thème parent qui est dans theme-functions.php par l’appel à TA nouvelle fonction définie dans le fichier functions.php de ton thème enfantC’est lourd ?
OuiMais il n’y a pas moyen de faire autrement.
16 mai 2014 à 22 h 09 min #951937ok je me lance :
1 dans le dossier du theme-enfant, je crée un fichier functions.php :Dedans j’y met ma modif, ce qui donne :
$value) { ${« $key »} = $value ; } ?>
<div style="text-align:center;padding:5px 0 2px;font-size:11px">
Site réalisé par <a href="http://www.montpellier-info.com/" target="_blank">
MONTPELLIER INFORMATIQUE</a> <span class="style1">©2013 – 2014</span>
</div><!-- #site-info -->
C’est donc « function parabola_site_info() » que je dois renommer?
En « function parabola-child-01_site_info() »
par exemple?17 mai 2014 à 0 h 49 min #951938Bien, ça a l’air de marcher. Je verrais à la prochaine maj du thème.
J’ai donc crée le fichier functions.php dans le dossier de mon thème enfant.
J’ai eu un message d erreur!
Dans le fichier theme-functions.php du thème parent, j’ai du changer la ligne :function parabola_site_info() {
en
function parabola_site_info_child() {
Une question, puisque le theme-fonctions.php (donc parent) a été modifié, quid lors de la mise à jour?
17 mai 2014 à 1 h 13 min #951939C’est marrant de faire exactement l’inverse de ce que je vous dis
Vous ne touchez pas aux fichiers du thème parent.
Vous appelez la fonction de votre thème enfant function parabola_site_info_child() {
et vous recréez dans le thème enfant tous les fichiers qui utilisent cette fonction, en changeant le nom pour la fonction parabola_site_info_child()Sinon ça ne marchera pas ^^
En plus, la franchement, vous faites compliqué pour rien, il suffit de modifier le footer directement… dans le thème enfant 🙂
17 mai 2014 à 2 h 47 min #951940Ok, je recommence :
dans le theme parent, je remet comme d’origine et je suis vos instructions, et là, j’ai 2 fois la ligne dans le footer???
celle du theme-functions.php parent
et
celle du theme-fonctions.php enfantMais on avance!
PS : En fait je fais ces opérations surtout pour essayer de comprendre le fonctionnement.17 mai 2014 à 3 h 11 min #951941Il faut aussi désactiver dans le thème enfant l’action qui a été activée dans le thème parent…. vive les thèmes à options 🙂
17 mai 2014 à 3 h 47 min #951942Désactiver donc la function?
Dans le theme enfant? Ou? Comment?17 mai 2014 à 10 h 38 min #951943AnonymeInvitéMaître WordPress34072 contributionsCe message a été supprimé suite à la demande de l’auteur.
17 mai 2014 à 11 h 01 min #951944@noaneo merci ^^ dans un thème enfant, il faut respecter la structure du thème parent pour tous les fichiers qui sont des « templates » ou inclus dans des templates (single.php, content.php, etc…) puisque le fonctionnement de wordpress est d’aller voir si il y a un fichier dans le thème enfant avant d’utiliser le fichier du thème parent.
Pour le fichier functions.php c’est différent : celui du thème parent est chargé AVANT celui du thème enfant. On ne peut donc pas le corriger de cette façon, il faut recréer ses propres fonctions dans son thème enfant. A partir de là on est libre de s’organiser comme on veut, et il est inutile de recréer une hiérarchie complète si c’est juste pour modifier 10 lignes de code !
@AntioneM bien sûr dans le thème enfant, où voulez vous ailleurs puisque le principe c’est de ne pas toucher au thème parent. Noaneo vous a donné un bon exemple pour désactiver une action (qui s’adapte aussi au filtre, en changeant ce qui doit être changé, ça dépend des cas, cf Codex)
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.