- Statut : non résolu
- Ce sujet contient 11 réponses, 4 participants et a été mis à jour pour la dernière fois par Lumiere de Lune, le il y a 9 années et 3 mois.
-
AuteurMessages
-
14 octobre 2015 à 15 h 42 min #555228
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.
14 octobre 2015 à 16 h 06 min #1024763Je déplace en support.
14 octobre 2015 à 19 h 55 min #102476414 octobre 2015 à 22 h 09 min #1024765Li-An wrote:Je déplace en support.Merci, je dois dire que je ne savais pas trop où le mettre.
14 octobre 2015 à 22 h 12 min #1024766Theme wordpress francais wrote:Oui, merci.
Celui là je l’ai lu et j’ai essayé les scripts mais cela n’a pas marché, d’où le post 😉14 octobre 2015 à 23 h 00 min #1024767Bon 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 ?)
15 octobre 2015 à 7 h 32 min #1024768[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.15 octobre 2015 à 9 h 10 min #1024769Hanami 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’OVHEn 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 phpA 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 ^^
16 octobre 2015 à 21 h 21 min #1024770MERCI 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 linesLes 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;
}?>
17 octobre 2015 à 3 h 33 min #1024771Pour 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 à inclureParce que sinon, tu perdras tes modifs à chaque mise à jour du thème.
23 octobre 2015 à 9 h 09 min #1024772Lumiè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.
23 octobre 2015 à 12 h 16 min #1024773erreur de recopie 🙂
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.