En parcourant la documentation Wordpress , il est indiqué que is_page_template()
se compare à un "nom de modèle", le cas échéant.
J'ai un modèle stocké dans page-homepage.php
appelé Homepage
:
/*
* Template Name: Homepage
* Description: The template for displaying the homepage
*/
Et j’ai du code à exécuter dans mon fichier functions.php lorsque j’utilise ce modèle:
if (is_page_template('Homepage')) {
...
Mais cela ne se déclenche pas lorsque je suis sur une page utilisant ce modèle.
Quand je regarde le code que Wordpress exécute pour is_page_template()
, il semble qu’il vérifie réellement le nom du document, pas le nom du modèle ...?
function is_page_template( $template = '' ) {
$page_template = get_page_template_slug( get_queried_object_id() );
if ( $template == $page_template )
return true;
Dans mon cas, il semble que $page_template
est page-homepage.php
- pas le nom du modèle, comme le suggère la documentation ...?
Est-ce que je fais quelque chose de mal?
Votre condition devrait être écrite comme ceci:
if (is_page_template('path/file.php')) {
// Do stuff
}
Je crois que la confusion est le résultat de deux choses:
is_page_template()
montre la fonction get_page_template_slug()
à sa base. Cette fonction renvoie en fait un nom de fichier, pas le slug du template. https://codex.wordpress.org/Function_Reference/get_page_template_slugLorsque vous spécifiez un argument pour la fonction is_page_template()
(comme dans l'exemple ci-dessus), le chemin du fichier est relatif à la racine du thème.
Cette fonction ne fonctionnera pas dans la boucle.
Je pense que la meilleure chose à dire est, il vérifie le nom du fichier et dans votre cas ce serait page-homepage.php. alors:
if (is_page_template('page-homepage.php')) {
...
Il faut également penser si le fichier de modèle est réellement stocké dans un autre dossier du thème. Lire la suite
Une dernière chose, le Template Name: Homepage
est généralement utilisé pour identifier le modèle lors de la création d'une page ou d'une publication.