Utiliser les INCLUDEs …. pourtant cela paraît simple ! (Créer un compte)

  • Statut : non résolu
12 sujets de 1 à 12 (sur un total de 12)
  • Auteur
    Messages
  • #555228
    Hanami
    Participant
    Chevalier WordPress
    173 contributions

    Bonjour,

    De façon à éviter des re-taper des lignes de codes dans certains posts je veux utiliser des INCLUDEs.
    C’est essentiellement, en fin d’article pour implémenter des liens variables en fonction du sujet: un sujet -> un lien.

    Prenons un exemple:

    Les liens sont des images « cliquables » et chacun possède son fichier-code par exemple « home-ovh.php » qui renvoie à l’accueil.
    Les fichiers sont dans wp-includes/ et sont accessibles en lecture et écriture (ça sert a rien mais on ne sait jamais, je changerai après).
    Tous les fichiers ont une extension .php.
    L’appel se fait depuis du php.

    J’ai essayé les méthode suivantes avec le renvoi à l’accueil pour faire le test:


    1 – include (ABSPATH . ‘/wp-includes/home-ovh.php’);
    2 – include ($Inc_path.’/wp-includes/home-ovh.php’);
    3 – include ($Url_includes.’/wp-includes/home-ovh.php’);
    4 – include ($ServDocRoot.’/wp-includes/home-ovh.php’);
    ?>

    le 1 et le 4 sont en fait les mêmes et les numéros ne figurent pas dans le code bien sur.

    Et ,résultat, aucune ne marche.
    Je n’ai ni include, ni message d’erreur …

    Surprenant et un peu horripilant car je bloque là dessus depuis 2 jours.

    Si quelqu’un a une idée elle sera bienvenue car je n’ai rien trouvé qui résolve mon problème, que ce soit dans le Codex ou les forums anglais ou français ou en regardant les require() dans index.php, wp-blog-header.php etc …

    Merci d’avance.

    #1024763
    Li-An
    Participant
    Maître WordPress
    28941 contributions

    Je déplace en support.

    #1024764
    Theme wordpress francais
    Membre
    Maître WordPress
    687 contributions
    #1024765
    Hanami
    Participant
    Chevalier WordPress
    173 contributions
    Li-An wrote:
    Je déplace en support.

    Merci, je dois dire que je ne savais pas trop où le mettre.

    #1024766
    Hanami
    Participant
    Chevalier WordPress
    173 contributions

    Oui, merci.
    Celui là je l’ai lu et j’ai essayé les scripts mais cela n’a pas marché, d’où le post 😉

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

    Bon déjà, ces fichiers n’ont strictement rien à faire dans wp-includes, qui est pour le « core » de wordpress, ils doivent être dans un dossier du thème ou du plugin.

    Ce qui va permettre d’utiliser la fonction « get_template_part » qu’elle est faite pour ça

    Sinon, pour débuguer ce qui ne va pas, fait un var_dump() de tes différentes variables, et vérifies que ça te donne bien ce que tu veux.

    (Bien entendu, tu ne fais pas ces appels depuis l’éditeur de texte, mais dans le template single.php, dans un thème enfant ?)

    #1024768
    Hanami
    Participant
    Chevalier WordPress
    173 contributions

    [Edit : suppression de la recopie inutile du message, ça aide la lisibilité du forum]

    Bonjour,

    Répondre aux demande d’aide à 1h du matin, il faut le faire: MERCI!
    Je dois avouer que je suis un peu paumé avec WordPress sur les environement partagés d’OVH °

    Il y a de la ‘doc’ partout mais je n’ai pas trouvé grand chose qui m’aide à résoudre on problème.
    La solution doit être simple mais je ne l’ai pas trouvée. Peut être que le problème est mal posé.

    La question est:
    « Comment faut il utiliser la fonction INCLUDE (‘nom_du_fichier’) dans une page HTML ou dans un script php » et est ce la seule qui puisse être utilisée?

    Ce qui se décline en:

    – Quelle syntaxe pour le INCLUDE?
    – avec ou sans parenthèses (on trouve les 2 solutions sur le web)
    – avec ou sans quotes ou guillemets (là aussi on voit les deux)

    – Où faut il stocker les fichiers à inclure?

    – dans wp-includes? manifestement ‘non’ c’est pou le ‘core’. °°
    – dans un sous répertoire, celui du thème probablement (je l’ai fait mais je ne suis pas arrivé à le faire ‘marcher’).

    – Quelle est la bonne fonction à utiliser pour récupérer là première partie chemin?
    1 – ABSPATH.
    2 – Inc_path.
    3 – Url_includes.
    4 – ServDocRoot.
    5 – Une autre ???
    Je pense que ce doit être la 1 ou la 4, ce qui donnerait le chemin complet depuis la racine.

    – Y a t’il plusieurs méthodes différentes suivant que l’inclusion se fait
    – depuis une page HTML avec les balises php ‘qui vont bien’ ou
    – depuis un script php?

    – Y a t’il d’autres façons d’inclure du code dans un script php à part INCLUDE ?
    – je pose celle là car je ne connaissais pas le

     »get_template_part » qu’elle est faite pour ça

    Je pense que si une réponse à ces questions existait quelque part cela aiderait pas mal de monde et moi en particulier.

    Merci

    Notes:
    ° par exemple il semble que la solution OVH empêche de sauvegarder les motifs de config de phpMyAdmin mais c’est une autre question).
    °° je me suis servi de ‘wp-includes’ pour tester la solution mais j’aurais déplacé les fichiers ensuite.

    #1024769
    Lumiere de Lune
    Participant
    Maître WordPress
    20531 contributions
    Hanami wrote:
    Répondre aux demande d’aide à 1h du matin, il faut le faire: MERCI!

    Qui sait, je suis peut-être à la Martinique 🙂 mais merci pour le merci

    Hanami wrote:
    Je dois avouer que je suis un peu paumé avec WordPress sur les environement partagés d’OVH

    En l’occurrence ça ne change strictement rien, mutualisé ou pas…

    Hanami wrote:
    « Comment faut il utiliser la fonction INCLUDE (‘nom_du_fichier’) dans une page HTML ou dans un script php » et est ce la seule qui puisse être utilisée?

    1- on n’utilise pas les pages HTML dans WordPress, mais les « templates » php ou les scripts
    2- « php de base » non, il y a aussi « require »
    3- « fonctions de WordPress » et « get_template_part » regarde dans le codex, lien en haut de la page.

    Hanami wrote:
    – Quelle syntaxe pour le INCLUDE?
    – avec ou sans parenthèses (on trouve les 2 solutions sur le web)
    – avec ou sans quotes ou guillemets (là aussi on voit les deux)

    php de base : include étant une fonction, avec parenthèses, le « nom du fichier avec son chemin » étant une variable, avec ‘ ou  » OSEF (cherche sur Google la différence entre les deux dans l’interprétation des variables)

    Hanami wrote:

    – Où faut il stocker les fichiers à inclure?

    – dans wp-includes? manifestement ‘non’ c’est pou le ‘core’. °°
    – dans un sous répertoire, celui du thème probablement (je l’ai fait mais je ne suis pas arrivé à le faire ‘marcher’).

    Comme je te l’ai dit, « dans le dossier du thème enfant » (là aussi, cherche « child theme » ^^) ou du plugin que tu fais. Un sous répertoire est bien, effectivement, ça aide à mettre de l’ordre

    Hanami wrote:
    – Quelle est la bonne fonction à utiliser pour récupérer là première partie chemin?
    1 – ABSPATH.
    2 – Inc_path.
    3 – Url_includes.
    4 – ServDocRoot.
    5 – Une autre ???
    Je pense que ce doit être la 1 ou la 4, ce qui donnerait le chemin complet depuis la racine.

    Aucune des quatre. WordPress dispose de fonctions avancées pour les répertoires (tu en as un exemple dans get_template_part dans le codex, qui sont :
    – pour les thèmes : get_template_directory_uri() et get_stylesheet_uri()
    – pour les plugins : plugins_url() , plugins_url(), plugin_dir_url(), plugin_dir_path(), plugin_basename() ou associé à _FILE_ ou dirname( _FILE_ ) qui sont des fonctions de base de php

    A l’inverse de tes quatre méthodes, ces fonctions utilisent les options de rewrite pour donner l’url avec le nom de domaine, au lieu du « chemin », elles sont donc beaucoup plus fiables « en toutes circonstance ».

    Hanami wrote:
    – Y a t’il plusieurs méthodes différentes suivant que l’inclusion se fait
    – depuis une page HTML avec les balises php ‘qui vont bien’ ou
    – depuis un script php?

    Encore une fois, on n’utilise pas les pages HTML dans WordPress, mais des templates, qui peuvent mélanger html et php « avec les balises qui vont bien ». Dans ce cas, les deux se valent.

    Hanami wrote:
    Je pense que si une réponse à ces questions existait quelque part cela aiderait pas mal de monde et moi en particulier.

    Oh mais elle existe 🙂 dans plein d’endroits, à commencer par :

    – la doc php (php.net)
    – la doc WordPress (le codex, lien qui se trouve en haut de la page)
    – plein de blogs techniques dans WordPress, par exemple :
    ++ http://mwanoz.fr/wordpress-include-require-get_template_part/
    ++ https://kovshenin.com/2013/get_template_part/
    ++ http://www.seomix.fr/get-template-part-include-functions/

    Hanami wrote:
    ° par exemple il semble que la solution OVH empêche de sauvegarder les motifs de config de phpMyAdmin mais c’est une autre question).

    ça n’a effectivement rien à voir avec le schmilblick, et rien ne t’empêche de mettre sur ton espace ton propre phpMyAdmin

    Hanami wrote:
    °° je me suis servi de ‘wp-includes’ pour tester la solution mais j’aurais déplacé les fichiers ensuite.

    Sauf qu’en faisant correctement dès le départ, tu peux utiliser les fonctions WordPress ^^

    #1024770
    Hanami
    Participant
    Chevalier WordPress
    173 contributions

    MERCI pour les explications détaillées.

    Ah, la Martinique, les Caraïbes …
    J’ai fait 2 fois la transat A/R (2011 et 2013) à la voile et suis allé plonger aux Grenadines et aux Anses d’Arlet entre-autre: SOMPTUEUX!👏
    Je devais le refaire cette année mais … pas sur de pouvoir.

    J’avais continué à chercher une solution avant de revenir ici.
    Cii dessous, voici ce que j’ai réussi à faire fonctionner.✅

    Cela n’amène peut être pas grand chose par rapport aux fonctions de base que je ne connaissais pas (j’utilise WP depuis 2 semaines à peu près) mais j’ai au moins compris comment cela marche.

    Peut être que cette explication aidera quelqu’un, qui sait.

    Merci encore.

    Marc

    /*


    INCLUDE set of script lines

    Les fichiers à inclure sont dans:

    ./home
    /xxxxxnetap
    /www
    /domaine
    /site’s name
    <===== ABSPATH donne le chemin jusque là
    /wp-content
    /themes
    /magazine-basic <=== Mon thème
    /H2_includes <=== Repertoire des scripts à inclure


    */

    <?

    define (‘ABSPATH’,dirname(__FILE__).’/’);
    echo ‘ABSPATH = ‘.ABSPATH.$eol;
    define (‘H2_includes_Dir’,ABSPATH.’wp-content/themes/magazine-basic/H2_includes’);
    $MyFile=H2_includes_Dir.’/’.’HOME_SCRIPT.html’;

    if (file_exists($MyFile)) {
    include($MyFile);
    }
    else {
    echo ‘Fichier non existant ou introuvable’.$eol;
    }

    ?>

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

    Pour faire bien les choses…

    home_script.php comme ça (certains serveurs sont sensibles aux majuscules, d’autres pas)

    Option 1 :

    $myfile = get_stylesheet_directory_uri().’/h2_includes/home_script.php’ ; 

    if ( file_exists( $myfile ) ) {

    include ( $myfile ) ;

    }

    else {

    echo ‘Fichier non existant ou introuvable’ ;

    }

    le camel case ( MyFile ) est par convention réservé aux classes, en php.
    le eol n’a aucun intérêt pour un message qui est censé ne pas apparaître en prod ^^

    Option 2 :

    $myfile = ‘h2_includes/home_script’ ; 

    get_template_part( $slug );

    (tu peux rajouter le if file exists si tu veux avoir l’info d’une erreur)

    Enfin je suis désolée de pinailler mais quand on fait ça, la bonne hiérarchie est :

    /themes
    /magazine-basic
    /magazine-basic-child <=== Le thème enfant
    /h2_includes <=== Repertoire des scripts à inclure

    Parce que sinon, tu perdras tes modifs à chaque mise à jour du thème.

    #1024772
    Hanami
    Participant
    Chevalier WordPress
    173 contributions
    Lumière de Lune wrote:
    Option 2 :

    $myfile = ‘h2_includes/home_script’ ; 

    get_template_part( $slug );

    Bonjour « Moon-light » (joli nom:)

    Dans ton Option 2, le paramètre passé dans l’appel est « $slug  » avec le chemin dans $MyFIle ???

    J’aurais pensé initialiser celui ci avant: $slug = ‘h2_includes/home_script’ ;
    Désolé d’une question si bête mais je préfère être sur.

    Encore merci pour les explications.

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

    erreur de recopie 🙂

12 sujets de 1 à 12 (sur un total de 12)
  • Vous devez être connecté pour répondre à ce sujet.