Description

Vous pouvez optionnellement fournir un nom de fichier de modèle ou un tableau de noms. La vérification se fera alors en fonction des noms de fichier de modèle donnés.

Pour plus d'informations sur cette fonction ou d'autres similaires, voir l'article Conditional Tags sur le Manuel du développeur de thème.

Modèle de page dans un sous-répertoire

Si le modèle de page est localisé dans un sous-répertoire d'un thème il faudra ajouter le nom du dossier séparé d'un slashe avant le nom de fichier.

Ne peut pas être utilisée dans une boucle

Dû à certaines variables globales qui sont réécrites pendant la boucle la fonction is_page_template() ne fonctionnera pas. Pour l'utiliser après la boucle on peut appeler wp_reset_query() en fin de boucle.

Alternative

Depuis que le slug du modèle de page est stocké dans 'post_meta' pour chaque poste qui a été assigné à un modèle de page, il est possible de directement accéder à 'post_meta' pour voir si une page a été assigné à un modèle de page. C'est cette méthode qu'utilise is_page_template().

La fonction get_page_template_slug() retournera le slug du modèle de page de la page actuelle. Vous pouvez utiliser cette fonction à l'intérieur ou à l'extérieur de la boucle pour déterminer si la page actuelle est un modèle de page.

Paramètre

$template

(string | array) (Optionnel) Nom de fichier de modèle spécifique ou tableau de noms à vérifier.

Valeur par défaut : ''

Retourne

(bool) True si la page est un modèle de page, false sinon.

Structure de la fonction is_page_template()

Définie dans le fichier wp-includes/post-template.php à la ligne 1757 :

function is_page_template( $template = '' ) {
    if ( ! is_singular() ) {
        return false;
    }

    $page_template = get_page_template_slug( get_queried_object_id() );

    if ( empty( $template ) ) {
        return (bool) $page_template;
    }

    if ( $template == $page_template ) {
        return true;
    }

    if ( is_array( $template ) ) {
        if ( ( in_array( 'default', $template, true ) && ! $page_template )
            || in_array( $page_template, $template, true )
        ) {
            return true;
        }
    }

    return ( 'default' === $template && ! $page_template );
}

Fonctions utilisées par is_page_template()

is_singular()

Détermine si la requête est pour un poste unique existant de n'importe quel type de poste (poste, attachement, page, types de poste personnalisés).

get_queried_object_id()

Retourne l'id de l'objet actuel demandé.

get_page_template_slug()

Obtient le nom de fichier d'un modèle de page pour un poste donné.

Où trouver la fonction is_page_template() dans le CMS Wordpress

Exemples

if ( is_page_template( 'about.php' ) ) {
    // code ici ...
}
Si le modèle de page est dans un sous-répertoire :
if ( is_page_template( 'directory-name/page-about.php' ) ) {
    // code ici ...
}
Utilisation avec un tableau de plusieurs nom de fichier :
if ( is_page_template( array( 'template-full-width.php', 'template-product-offers.php' ) ) ) {
   // code ici ...
}

Sources

Codex Wordpress : is_page_template()

Autres fonctions dans le même fichier : wp-includes/post-template.php

Retour