IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WordPress PHP Discussion :

Thème enfant et fichiers modifiés php et js


Sujet :

WordPress PHP

  1. #1
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 142
    Points : 108
    Points
    108
    Par défaut Thème enfant et fichiers modifiés php et js
    Bonjour,

    Je suis en train d'essayer de construire un thème enfant mais j'ai pas mal de fichiers à y intégrer.
    C'est la première fois que je modifie autant un thème.
    Les modifications portent sur 8 fichiers PHP et un JS.
    (thème "minimal grid" v 1.2.9, sous WP 5.6.1)

    fichiers :
    inline-style.php
    template-tags.php
    template-tags.php
    load-posts.php
    single.php
    searchform.php
    content.php
    comments.php
    script.js

    J'ai activé le thème enfant correctement.

    J'ai copié les fichiers modifiés dans le thème enfant, j'ai reproduis la structure des répertoires du parent.

    Le problème est que, à l'exception du CSS, c'est toujours les fichiers du parent qui s'appliquent.

    J'ai tenté des dequeue et enqueue mais sans résultat.

    Est-ce qu'il ne suffisait pas de donner le même nom aux fichiers dans le thème enfant pour qu'ils s'appliquent en remplacement de ceux du thème parent ?

    Je n'ai pas de code à montrer, mon "function.php" minimal fonctionne très bien dans d'autres installations où je n'avais que le CSS à modifier.


    Merci

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    l'utilisation directe des fichiers PHP fonctionnent seulement avec les fichiers templates, il y a plus d'informations sur ces fichiers là :
    https://developer.wordpress.org/them...ate-hierarchy/
    donc par exemple dans votre liste, le fichier single.php devrait être utilisé en remplacement de celui du parent.

    pour les autres fichiers cela dépend de la façon dont les fichiers du thème sont utilisés.
    par exemple dans le fichier "minimal-grid/inc/template-tags.php", les fonctions sont entourées par des "!function_exists". cela veut dire que si vous définissez une fonction avec le même nom dans le thème enfant, alors la fonction du thème parent ne sera pas chargée.

  3. #3
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 142
    Points : 108
    Points
    108
    Par défaut
    Merci Mathieu,

    Je comprends mieux.

    On ne peut pas charger toutes les fonctions contenues dans "template-tags.php" avec une simple commande dans function.php du thème enfant ?

    J'ai essayé "require" comme le thème parent le fait dans son fichier "init.php", sans résultat. J'avais plein d'erreurs.


    Pour le script.js j'ai trouvé, j'ai appliqué le code du thème parent en changeant le path :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    add_action( 'wp_enqueue_scripts', 'add_theme_script');
     
    function add_theme_script() {
     
    $args = minimal_grid_get_localized_variables();
     
    wp_enqueue_script('script', get_stylesheet_directory_uri() . '/js/script.js', array( 'jquery', 'wp-mediaelement' ), '', true);
    wp_localize_script( 'script', 'minimalGridVal', $args );
     
    }

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    Citation Envoyé par AMP29 Voir le message
    J'ai essayé "require" comme le thème parent le fait dans son fichier "init.php", sans résultat. J'avais plein d'erreurs.
    ça aurait du fonctionner, quelles sont les erreurs ?

  5. #5
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 142
    Points : 108
    Points
    108
    Par défaut
    Bonjour,

    Si je mets ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    require_once (get_stylesheet_directory_uri() .'/inc/template-tags.php');
    j'ai ça :
    Nom : ERRORS 1.png
Affichages : 261
Taille : 94,5 Ko

    Si je mets ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    require_once ('/inc/template-tags.php');
    J'ai ça :
    Nom : ERRORS 2.png
Affichages : 252
Taille : 59,8 Ko

    Pas d'erreur de chemin ou de nom.
    Le thème parent procède avec des "require", tous regroupés dans un fichier init.php lancé dans "function.php ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    /**
     * Load all required files.
     */
    require get_template_directory() . '/inc/init.php';

    Merci

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    si vous commencez le chemin par "/" php va chercher dans le répertoire racine du disque
    essayez cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once "./inc/template-tags.php";

  7. #7
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 142
    Points : 108
    Points
    108
    Par défaut
    Je n'ai pas assez creuser l'erreur.

    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    require_once (get_stylesheet_directory_uri() . '/inc/init.php');
    si je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    require_once (get_stylesheet_directory() . '/inc/init.php');
    cela fonctionne.

    Et je ne mets donc dans le init.php du child que les fichiers que j'ai modifiés et bien sûr copiés dans un dossier du child.
    A priori le parent exécute son init.php et charge le reste.

    J'ai dû enlever une fonction de "template-tags.php" côté child car dans le parent elle n'était pas englobée dans "if ( ! function_exists(.."

    Mathieu, vous confirmez que cela se passe comme je le pense ?
    Merci

  8. #8
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 142
    Points : 108
    Points
    108
    Par défaut
    si vous commencez le chemin par "/" php va chercher dans le répertoire racine du disque
    essayez cela :

    require_once "./inc/template-tags.php";
    J'ai essayé,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    require_once './inc/template-tags.php';
    require_once ('./inc/template-tags.php');
    require_once ("./inc/template-tags.php");
    require_once "./inc/template-tags.php";
    Aucun ne fonctionne
    "Warning: require_once(./inc/template-tags.php): failed to open stream: No such file or directory in..."

  9. #9
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 142
    Points : 108
    Points
    108
    Par défaut
    Il me reste un fichier qui fait de la résistance :

    content.php

    Celui-là est un template spécifique au thème parent.
    "content.php" ne contient pas de définition de fonction mais il en appelle.
    C'est là que ça ne marche plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    require get_stylesheet_directory() . '/inc/content.php';
    Provoque :

    Nom : ERRORS 3.png
Affichages : 241
Taille : 42,2 Ko


    Merci

  10. #10
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    ce fichier est un template donc vous avez juste besoin de le mettre dans le thème enfant dans "template-parts/content.php" et wordpress l'utilisera automatiquement.

  11. #11
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 142
    Points : 108
    Points
    108
    Par défaut
    Bon, je vais essayer de comprendre ce qui se passe, parce que là je suis paumé.
    Je vais probablement devoir ouvrir une nouvelle discussion.

    J'ai voulu tester mon thème enfant dans un environnement neuf.
    Nouveau virtual host, installation de WP, installation du thème parent neuf.

    J'ai installé le thème enfant a minima, juste le CSS pour commencer et j'ai des problèmes inattendus.

    1 - un scroll de pages automatique (ajax) ne fonctionne plus. On reste bloqué à la première page des posts.
    2 - Je ne peux plus modifier le thème dans admin (personnaliser). J'obtiens le message :
    "Il semble que quelque chose se passe mal. Attendez deux secondes puis veuillez réessayer."

    Je ne comprends pas. C'est juste un thème enfant avec un CSS différent.
    Pas de script enfant, pas de template.
    Function.php enfant est quasi vide.

    C'est bien le thème qui est en cause puisque le parent fonctionne.

  12. #12
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 142
    Points : 108
    Points
    108
    Par défaut
    ce fichier est un template donc vous avez juste besoin de le mettre dans le thème enfant dans "template-parts/content.php" et wordpress l'utilisera automatiquement.
    J'ai essayé mais il ne le prend pas.
    Ce template n'appartient pas à la hiérarchie WP.

  13. #13
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    essayez avec le thème enfant en pièce jointe :
    minigrid-enfant.zip

  14. #14
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 142
    Points : 108
    Points
    108
    Par défaut
    essayez avec le thème enfant en pièce jointe :
    Je suis confus.
    Habituellement je me garde de faire des erreurs aussi bêtes, mais là je me suis bien fait avoir.
    Votre thème fonctionne très bien évidemment.

    J'ai fait une erreur dans le nom du répertoire "template_parts" au lieu de "template-parts".
    Je suis vraiment désolé.
    Content.php est bien pris en compte maintenant.

    Côté admin votre thème fonctionne aussi.
    Mais mon thème enfant refuse toujours les modifications.
    "Il semble que quelque chose se passe mal. Attendez deux secondes puis veuillez réessayer."

    Je vais clore cette discussion et la placer comme "résolue".
    Tous les fichiers modifiés dont j'avais besoin pour mon thème enfant sont intégrés.

    (comments.php, dont je n'ai plus parlé, est modifiable de manière plus canonique et "normale", je n'avais que des traductions à y ajouter)


    Merci

  15. #15
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 142
    Points : 108
    Points
    108
    Par défaut
    Je n'aurais pas besoin de créer une nouvelle discussion concernant le problème de personnalisation du thème côté admin qui m'envoyait :

    Nom : ERRORS 4.png
Affichages : 237
Taille : 10,6 Ko

    J'avais laissé traîner ceci dans "functions.php" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ?>
     
     
    <!-- <?php var_dump(get_template_directory_uri());?>
    <?php var_dump(get_stylesheet_directory_uri() . '/templates/template-tags.php');?> -->
     
     
     
    <?php
    Un truc que je pensais avoir mis proprement en commentaire (et en effet ça ne s'affichait plus) mais qui polluait le code en php.

    Et ça n'a pas manqué, "customise.php" ne l'entendait pas de cette oreille ! Tatillon...

    Une fois la partie supprimée tout est rentré dans l'ordre.
    Je respire.

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 154
    Points : 230
    Points
    230
    Par défaut Super, mais...
    Bonjour, A titre informatif, si votre Thème "n'est pas privé", il serait peut-être intéressant pour la communauté d'avoir la solution "complète".
    Merci +++

  17. #17
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 142
    Points : 108
    Points
    108
    Par défaut
    Bonjour NJNDEV,

    Oui, sans problème. Avec tous les conseils et toute l'aide que je reçois ici c'est bien normal.
    Quand je l'aurai installé en production, je le partagerai.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modifier le nom d' un fichier avec php
    Par wexndene dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2017, 12h25
  2. Fichier index.php modifié
    Par yakotey dans le forum Langage
    Réponses: 2
    Dernier message: 30/07/2012, 21h24
  3. Modifier un nom de fichier depuis php
    Par nimbus_77 dans le forum Langage
    Réponses: 7
    Dernier message: 18/11/2008, 19h53
  4. Modifier le template de création d'un fichier .class.php
    Par Sebastien13 dans le forum Eclipse PHP
    Réponses: 0
    Dernier message: 25/07/2007, 12h08
  5. modifier un fichier en php
    Par smh_master dans le forum Langage
    Réponses: 1
    Dernier message: 01/12/2006, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo