- WordPress :4.8.2
- Statut : résolu
- Ce sujet contient 11 réponses, 5 participants et a été mis à jour pour la dernière fois par
JeanSeb – Long Watch Studio, le il y a 7 années et 6 mois.
-
AuteurMessages
-
14 octobre 2017 à 19 h 06 min #1929153
Bonjour La Communauté WordPress,
J’espère que vous avez passé un bon samedi ensoleillé.
Je viens vers vous car après mille & 1 recherche internet je n’ai pas trouvé ma solution.
Je souhaiterai créer un shortcode qui appel le contenu d’un fichier php.
Je vous met ci-dessous un code, qui sera surement plus parlant q’un pavé
function jesuisperdu() {
return 'jesuisperdu.php';
}
add_shortcode('perdu', 'jesuisperdu');Un grand merci par avance
14 octobre 2017 à 23 h 52 min #1929307Bonjour,
Sauf erreur de ma part (je ne suis pas développeuse), votre fonction appelle un fichier … mais pas son contenu. Ou alors c’est un problème de chemin du fichier …
Ce serait peut-être mieux si vous mettiez le code exact.
15 octobre 2017 à 10 h 06 min #1929602Bonjour,
Un grand merci déjà pour votre réponse.
C’est exactement ce que je souhaite faire, appellé un fichier qui contient du code php.
Ci dessous le code plugin.php
<?php
/*
Plugin Name: SMON PLUGIN
Plugin URI: https://URLPLUGIN.FR
Description: Création de shortcodes
Version: 0.1
Author: Mon plugin
Author URI: https://monplugin.fr
*/
function jesuisperdu() {
return 'jesuisperdu.php';
}
add_shortcode('perdu', 'jesuisperdu');Ci dessous le code de jesuisperdu.php
<?php global $current_user; if ( isset($current_user) ) { echo $current_user->user_login;}?>
Quand j’écris simplement du code php en direct dans une page tout fonctionne.
Dans mon exemple le code est cours et simple, des fois il sera bien plus grand.
Encore merci pour votre aide
15 octobre 2017 à 15 h 40 min #1929923Sans parler de création d’extension dédiée, est-ce que cette fonction « marche » si elle est placée dans functions.php de votre thème ?
Si ça n’est pas le cas, c’est probablement parce qu’il faut appeler le fichier jesuisperdu.php, avec require_once … sinon, comment va t-il aller le chercher ?
15 octobre 2017 à 17 h 00 min #1929994Il vaut mieux opter pour la solution basé sur un modèle de page de WordPress en créant un modèle de page au lieu de passer par des Shortcodes pour exécuter du PHP sur une page.
Plusieurs possibilités pour appeler un fichier PHP ou pour exécuter du PHP dans un modèle de page :
- Via get_template_part -> https://www.seomix.fr/get-template-part-include-functions/
- Via une function (mettre le code de la fonction dans le fichier functions.php et il suffit d’appeler la function dans le modèle de page)
- Via un Hook (initialiser un hook add_action de la fonction dans le fichier functions.php et il suffit d’appeler le hook dans le modèle de page via un do_action)
- Il y aussi la possibilité d’appeler un fichier php avec un include ou un require_once
16 octobre 2017 à 0 h 26 min #1930583Il vaut mieux opter pour la solution basé sur un modèle de page de WordPress en créant un modèle de page au lieu de passer par des Shortcodes pour exécuter du PHP sur une page.
Ça dépend de ce qu’on met dans le shortcode (selon le résultat attendu), ça dépend si il inclut des paramètres ou pas, ça dépend si on doit le réutiliser sur d’autres pages/articles, etc …
De nombreuses extensions comportent des fonctions qui sont destinées à être appelées par des shortcodes (galeries, cartes map, … pour ne citer que celles là)
Via unHook (initialiser un hook add_action de la fonction dans le fichier functions.php et il suffit d’appeler le hook dans le modèle de page via un do_action)
C’est exactement ce qu’on fait avec un shortcode … mais directement dans la page 😉
16 octobre 2017 à 1 h 42 min #1930613Je souhaiterai créer un shortcode qui appel le contenu d’un fichier php
Je me suis surtout focalisé sur la finalité de la demande (appel le contenu d’un fichier php), mais il est vrai que si @leboncoin à envie de créer un shortcode pour appeler le contenu d’un fichier PHP c’est son choix.
@leboncoin avec ton shortcode [perdu][/perdu] tu peux appeler ton fichier php en changeant dans ta fonctionreturn ‘jesuisperdu.php’;
par
get_template_part(‘jesuisperdu’);
16 octobre 2017 à 3 h 19 min #1930676Salut,
Voila le code que j’utilise pour appeler un script php via un shortcode dans l’éditeur de texte:
// include files via shortcode
function include_file($atts) {
extract(shortcode_atts(array(‘filepath’ => ‘NULL’), $atts));
if ($filepath!=’NULL’ && file_exists(get_stylesheet_directory().$filepath)){
ob_start();
include(get_stylesheet_directory().$filepath);
$content = ob_get_clean();
return $content;
}
}add_shortcode(‘include’, ‘include_file’);
et dans le texte, j’insère cela:
[include filepath=’/xxxx.php’]
16 octobre 2017 à 12 h 29 min #1931189Bonjour,
Merci à vous, pifoux, yrdna etflobogo d’avoir pis le temps de me répondre.
J’ai essayé toutes vos solutions sans succès.
J’essai de trouver la solution de mon côté dans les plus bref délais afin de vous la partager.
Encore merci à vous
16 octobre 2017 à 19 h 10 min #1931543Bonjour leboncoin,
Reprenons pas à pas ton exemple.
Un shortcode va remplacer un « code » par du contenu.
Ce contenu doit pouvoir s’afficher (je pense que c’est le but) ou s’exécuter en fond.
Donc, ton exemple est le suivant :
function jesuisperdu(){
return'jesuisperdu.php';
}
add_shortcode('perdu','jesuisperdu');Ce qui implique que le shortcode voulu est [perdu] et on fait appel à la fonction ‘jesuisperdu’.
Pour retourner un contenu d’un php, il faut l’encapsuler dans un include (comme l’a déjà dit yrdna)
Si ton jesuisperdu.php ne contient que du texte, ta fonction doit donc s’écrire ainsi :
return include(‘jesuisperdu.php’);
par contre, si il y a une exécution de code avec des « echo » (par exemple), il est préférable d’encapsuler le include comme l’a indiqué pifoux.
Ton code deviendra donc :
ob_start();
include('jesuisperdu.php');
$content = ob_get_clean();
return $content;ob_start() permet de capturer tout ce qui devrait normalement s’afficher à l’écran directement. ob_get_clean() permet de finir la capture, de vider le buffer mémoire et de retourner ce contenu dans $content.
J’espère que ces quelques explications complémentaires te seront utiles.
16 octobre 2017 à 21 h 53 min #1931778Bonsoir JeanSeb,
Ta technique fonctionne à la perfection.
Un grand merci à toi pour ton aide.
Je vous met le code compilé ci-dessous.
FICHIER 1, LE PLUGIN
<?php
/**
* Plugin Name: JESUISPERDU
**/
function jesuisperdu(){ //Nom de la fonction
ob_start();//permet de capturer tout ce qui devrait normalement s’afficher à l’écran directement
include('jesuisperdu.php');//Appel le fichier php jesuisperdu placé à la racine du plugin
$content = ob_get_clean();//ob_get_clean() permet de finir la capture, de vider le buffer mémoire et de retourner ce contenu dans $content.
return $content;//Affiche le contenu
}//Fin de la fonction
add_shortcode('perdu','jesuisperdu'); //Création du shortocde [perdu]CODE PLUGINCode fichier jesuisperdu.php
<?php
global $current_user; if ( isset($current_user) ) { echo $current_user->user_login;}//Affiche le nom utilisateur
echo'</br>';//Saut de ligne
global $current_user; if ( isset($current_user) ) { echo $current_user->user_url;}//Affiche l'url de l'utilisateurCODE FICHIER JESUISPERDU.PHPUn grand merci à :
- JeanSeb LWS
- Pifoux
- yrdna
- flobogo
Excellente soirée à tous
16 octobre 2017 à 23 h 17 min #1931839Un dernier point dans ton code « jesuisperdu.php », pourquoi faire deux déclarations de $current_user ?
Optimise le code en faisant :
<?php
global $current_user;
if( isset($current_user) )
{
echo "{$current_user->user_login}<br/>{$current_user->user_url}";
} -
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.