Comment insérer du code PHP dans un article ou une page WordPress

Insérer du code PHP dans un page, un widget ou un article WordPress
Vous le savez peut-être (ou pas), je suis également responsable de la création d’un site WordPress de tutoriels gratuits, Astuces et Aide Informatique. Le but de ce site (également sous WordPress) est de proposer des ressources gratuites pour les utilisateurs les moins avancés en informatique in de les aider à mieux appréhender les outils numériques (ordinateur mais aussi smartphone ou tablette tactile). J’ai rencontré récemment un problème avec un de mes articles qui permet d’afficher l’adresse IP du visiteur. J’utilise depuis peu un service d’optimisation publicitaire qui sert en quelque sorte de proxy entre l’utilisateur et le visiteur. Résultat des courses : mon article qui auparavant affichait l’adresse IP du visiteur par l’intermédiaire d’une extension WordPress affichait donnait l’adresse IP du relai, hébergé par Amazon Web Services (services et produits de Cloud d’Amazon). J’ai finalement réussi à trouver une solution technique (décrite plus bas pour celles et ceux que ça intéresse) pour afficher la bonne IP du visiteur. Mais nouveau problème ! Je devais me passer du plugin utilisé jusqu’à présent et me servir d’un code PHP personnalisé que je devais insérer dans mon article. C’était la première fois que je voulais injecter du code PHP directement dans mon article. Et je ne savais pas comment faire… Heureusement, j’ai trouvé une solution simple à mettre en place à l’aide d’un snippet WordPress et d’un shortcode pour WordPress. Insérer du code PHP dans un page, un widget ou un article WordPress

L’essentiel à retenir ℹ️

Pour insérer du code PHP dans WordPress sans extension, créez une fonction dans le fichier functions.php de votre thème, associez-la à un shortcode personnalisé via add_shortcode, puis utilisez ce shortcode dans vos pages et articles. Pour éviter de perdre votre snippet lors d’un changement de thème, préférez un thème enfant WordPress ou le plugin Code Snippets.

Solution pour afficher du code PHP dans une page ou un article WordPress sans extension

Je suis d’abord tombé sur de vieux articles qui dataient d’il y a 5-6 ans et expliquaient qu’on pouvait facilement utiliser du code PHP dans une page ou un article WordPress en mettant le code PHP via le shortcode adéquat : [PHP][/PHP]. Malheureusement, cela n’a pas fonctionné… J’avais juste à l’écran le shortcode affiché dans l’article sans affichage de l’adresse IP récupéré par mon script.
LIRE AUSSI  Comment le nocode révolutionne la création de produits digitaux ?
J’ai également vu qu’il existait des extensions pour utiliser du code PHP dans des pages / articles / widgets WordPress comme Woody ad snippets, PHP Everywhere ou Insert PHP Code Snippet. Mais passer par un plugin pour se servir de PHP ne m’enchantait guère, notamment parce que plusieurs de ces modules n’étaient pas à jour et incompatibles avec ma version (à jour, elle) de WordPress. J’ai donc trouvé une solution alternative en farfouillant dans le web : créer un snippet dans le fichier functions.php de mon template WordPress et afficher le résultat via un shortcode personnalisé. Si vous changez souvent de thème, placez plutôt votre code dans le fichier functions.php d’un thème enfant, ou utilisez le plugin gratuit Code Snippets, qui stocke vos fonctions en base de données et les conserve quel que soit le thème actif.

Insérer facilement du PHP dans vos pages WordPress !

Voilà comment faire pour insérer du code PHP dans vos widgets / articles / pages WordPress :
  1. Créer votre fonction personnalisée dans le fichier functions.php de votre thème WordPress.
  2. Assigner le résultat de votre fonction à un shortcode via la fonction de WordPress add_shortcode . Pour la documentation en anglais sur cette fonction référence : https://codex.wordpress.org/Function_Reference/add_shortcode.
  3. Utiliser votre shortcode personnalisé dans votre page / widget ou article WordPress.
Finie la théorie, passons maintenant à la pratique avec l’exemple de création d’un snippet pour afficher l’IP d’un visiteur et son shortcode associé.

Comment afficher l’adresse IP d’un visiteur de votre site WordPress ?

Pour afficher l’IP de votre visiteur depuis votre site WordPress, il existe 2 solutions : utiliser un plugin dédié ou un snippet et son shortcode.
LIRE AUSSI  Comment installer WordPress

Les plugins WordPress pour afficher l’IP d’un visiteur

L’avantage d’une extension WordPress, c’est que si vous venez à changer de thème, vous n’aurez pas à recopier votre snippet dans le nouveau fichier functions.php. Car sans ça, votre shortcode et sa fonction personnalisée ne fonctionneraient plus. L’inconvénient : un plugin dédié est plus lourd que le petit bout de code que je vous propose. Voici deux plugins qui permettent de montrer l’adresse IP des visiteurs : Pour plus d’extensions concernant les IP, consultez le répertoire officiel des extensions WordPress : https://fr.wordpress.org/plugins/search/IP/ Vous y trouverez des plugins qui permettent de changer la langue du site WordPress selon l’IP du visiteur ou des plugins qui restreignent l’accès de votre site aux utilisateurs de certains pays en se basant sur leur adresse IP.

Afficher l’IP d’un visiteur dans un site WordPress sans plugin

Autre solution : montrer l’IP du visiteur sans plugin WordPress grâce au petit bout de code que je vous propose ! Voici le code PHP à copier dans le fichier functions.php du thème de votre site WordPress :
/* affichage simple de l' adresse IP du visiteur */
function ip_visiteur() {
	$ip = $_SERVER['REMOTE_ADDR'];
}
add_shortcode( 'affiche_ip', 'ip_visiteur' );
Une fois ce code copié dans le fichier functions.php, allez dans l’article ou la page concernée puis utilisez le shortcode créé par le code ci-dessus via la fonction WordPress add_shortcode  : copiez [affiche_ip][/affiche_ip] dans votre éditeur à l’endroit de la page de où vous voulez afficher l’IP. C’est tout !

Afficher l’adresse IP d’un visiteur derrière un proxy

Il peut arriver cependant que votre visiteur soit derrière un proxy. Dans ce cas l’IP affichée par le code basique ci-dessus n’est pas la bonne. Voici la version améliorée de la fonction PHP (à copier dans votre fichier functions.php) qui permet de récupérer l’adresse IP d’un visiteur de votre site :
/* code complet pour afficher une adresse IP */
function ip_visiteur() {
	if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
		$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
	}
	elseif(isset($_SERVER['HTTP_CLIENT_IP']))
	{
		$ip = $_SERVER['HTTP_CLIENT_IP'];
	}
	else
	{
		$ip = $_SERVER['REMOTE_ADDR'];
	}
	return $ip;
}
add_shortcode( 'affiche_ip', 'ip_visiteur' );
Comme pour le code précédent, il vous faudra ensuite utiliser le shortcode [affiche_ip][/affiche_ip] à l’endroit où vous voulez montrer l’IP.
LIRE AUSSI  Qu'est-ce qu'un snippet WordPress ?

Afficher l’adresse IP du visiteur et non d’Amazon Web Services

Dans mon cas précis (utilisation d’un service hébergé dans le cloud d’Amazon, AWS), ce code ne fonctionnait toujours pas… Impossible de trouver l’adresse IP correcte de mes visiteurs. J’ai trouvé la solution en utilisant la fonction PHP apache_request_headers qui inspecte les en-têtes HTTP d’Apache (le serveur HTTP le plus répandu). Voici donc le code qui m’a permis de récupérer la bonne adresse IP de mes visiteurs :
/* affiche l'adresse IP du visiteur à travers AWS */
function ip_visiteur() {
	$headers = apache_request_headers(); 
	$ip = $headers["X-Real-Ip"];
	return $ip;
}
add_shortcode( 'affiche_ip', 'ip_visiteur' );
Ce code sera utile si vous utilisez AWS ou Cloudflare.

Précaution de sécurité

Attention : afficher l’adresse IP d’un visiteur dans le contenu public d’un article est une pratique à réserver aux contextes techniques (tests, démos). En production, évitez d’exposer des données personnelles comme l’IP sans raison valable. Si vous utilisez ce snippet sur un site ouvert au public, assurez-vous de respecter le RGPD en vigueur.

Questions fréquentes

Peut-on insérer du code PHP directement dans l’éditeur Gutenberg ?

Non. Gutenberg n’exécute pas le PHP saisi directement dans un bloc. Le code PHP doit être déclaré dans le fichier functions.php de votre thème et appelé via un shortcode. Sans ça, le code s’affiche tel quel à l’écran.

Faut-il modifier functions.php du thème parent ou du thème enfant ?

Toujours du thème enfant. Si vous modifiez directement le thème parent, une mise à jour du thème effacera vos modifications. Le thème enfant hérite du parent tout en conservant vos personnalisations.

Le plugin Code Snippets est-il sûr ?

Oui, Code Snippets est l’un des plugins les plus utilisés pour gérer des fonctions PHP personnalisées sous WordPress. Il propose un mode débogage qui désactive automatiquement un snippet en cas d’erreur fatale.

Mon shortcode affiche le code PHP au lieu de l’exécuter. Pourquoi ?

Cela se produit quand la fonction n’est pas correctement enregistrée via add_shortcode, ou si le shortcode utilisé dans l’article ne correspond pas exactement au nom déclaré. Vérifiez l’orthographe, les espaces et les majuscules.

Peut-on utiliser cette méthode dans un widget WordPress ?

Oui. Une fois le shortcode créé, vous pouvez l’insérer dans n’importe quel widget de texte ou HTML personnalisé. Selon votre configuration, il peut être nécessaire d’activer les shortcodes dans les widgets via add_filter('widget_text', 'do_shortcode'); dans functions.php.

Que faire si mon code PHP provoque une erreur sur tout le site ?

Si une erreur fatale survient, WordPress peut afficher un écran blanc. Accédez au fichier functions.php via FTP ou le gestionnaire de fichiers de votre hébergeur et supprimez ou commentez le code problématique. Le plugin Code Snippets évite ce risque grâce à son mode de sécurité intégré.

Quelle est la différence entre un snippet et un shortcode WordPress ?

Un snippet WordPress est un bout de code PHP ajouté dans functions.php. Un shortcode est la balise courte utilisée dans le contenu pour déclencher l’exécution d’une fonction. Les deux fonctionnent ensemble : le snippet crée la logique, le shortcode l’appelle.

Steve Chevillard

A propos de Steve Chevillard

Je suis responsable du numérique pour Philo éditions (Philosophie magazine, Sciences Humaines, Philonomist) et j'utilise WordPress depuis la fin des années 2000. J'ai créé astuceswp.fr en 2018 pour partager mon expérience et aider ceux qui veulent se lancer sur WordPress ou aller plus loin avec leur site. Je publie des tutoriels pratiques sur WordPress, l'hébergement, le SEO et les outils numériques, en essayant de rester le plus clair et accessible possible. Mon objectif : vous donner les clés pour être autonome sur votre site, sans vous noyer dans le jargon technique.

3 Commentaires sur “Comment insérer du code PHP dans un article ou une page WordPress”

  1. Merci pour ces infos, très pratiques et surtout à jour, on s’égare parois dans des articles obsolètes, d’où l’utilité de ce blog…

Les commentaires sont fermés.