[Résolu] theme-functions.php (Créer un compte)

  • 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 1 mois.
15 sujets de 16 à 30 (sur un total de 47)
  • Auteur
    Messages
  • #951930
    AntoineM
    Participant
    Chevalier WordPress
    173 contributions

    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!!!

    #951931
    Anonyme
    Invité
    Maître WordPress
    34070 contributions

    Ce message a été supprimé suite à la demande de l’auteur.

    #951932
    Lumiere de Lune
    Participant
    Maître WordPress
    20531 contributions

    Vous ê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 functions

    Or 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

    #951933
    AntoineM
    Participant
    Chevalier WordPress
    173 contributions

    Oui, j’ ai recréé les répertoires dans le thème enfant! N’est pas une bonne méthode?

    #951934
    Lumiere de Lune
    Participant
    Maître WordPress
    20531 contributions

    Les 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.

    #951935
    AntoineM
    Participant
    Chevalier WordPress
    173 contributions

    Donc, 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à!

    #951936
    Lumiere de Lune
    Participant
    Maître WordPress
    20531 contributions

    Donc 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 enfant

    C’est lourd ?
    Oui

    Mais il n’y a pas moyen de faire autrement.

    #951937
    AntoineM
    Participant
    Chevalier WordPress
    173 contributions

    ok 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?

    #951938
    AntoineM
    Participant
    Chevalier WordPress
    173 contributions

    Bien, ç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?

    #951939
    Lumiere de Lune
    Participant
    Maître WordPress
    20531 contributions

    C’est marrant de faire exactement l’inverse de ce que je vous dis :D

    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 🙂

    #951940
    AntoineM
    Participant
    Chevalier WordPress
    173 contributions

    Ok, 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 enfant

    Mais on avance!
    PS : En fait je fais ces opérations surtout pour essayer de comprendre le fonctionnement.

    #951941
    Lumiere de Lune
    Participant
    Maître WordPress
    20531 contributions

    Il 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 🙂

    #951942
    AntoineM
    Participant
    Chevalier WordPress
    173 contributions

    Désactiver donc la function?
    Dans le theme enfant? Ou? Comment?

    #951943
    Anonyme
    Invité
    Maître WordPress
    34070 contributions

    Ce message a été supprimé suite à la demande de l’auteur.

    #951944
    Lumiere de Lune
    Participant
    Maître WordPress
    20531 contributions

    @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)

15 sujets de 16 à 30 (sur un total de 47)
  • Vous devez être connecté pour répondre à ce sujet.