Mirando la documentación de Wordpress , dice que se is_page_template()
compara con un "nombre de plantilla", si se proporciona uno.
Tengo una plantilla almacenada en page-homepage.php
llamada Homepage
:
/*
* Template Name: Homepage
* Description: The template for displaying the homepage
*/
Y tengo un código que deseo ejecutar en mis functions.php cuando estoy usando esa plantilla:
if (is_page_template('Homepage')) {
...
Pero no se activa cuando estoy en una página que usa esa plantilla.
Cuando miro el código que ejecuta Wordpress is_page_template()
, parece que realmente comprueba el nombre del documento, no el nombre de la plantilla ...
function is_page_template( $template = '' ) {
$page_template = get_page_template_slug( get_queried_object_id() );
if ( $template == $page_template )
return true;
En mi caso parece que $page_template
es page-homepage.php
- no es el nombre de la plantilla, como la documentación sugiere ...?
¿Estoy haciendo algo mal?
page-template
codex
Django Reinhardt
fuente
fuente
Respuestas:
Su condición debe escribirse así:
Creo que la confusión es el resultado de dos cosas:
is_page_template()
muestra laget_page_template_slug()
función en su núcleo. Esta función en realidad devuelve un nombre de archivo, no la plantilla slug. https://codex.wordpress.org/Function_Reference/get_page_template_slugAl especificar un argumento para la
is_page_template()
función (como en el ejemplo anterior), la ruta del archivo es relativa a la raíz del tema.Esta función no funcionará dentro del bucle.
fuente
get_page_template_slug()
realidad no devuelva una bala!Creo que lo mejor que puede decir es que verifica el nombre del ARCHIVO y en su caso sería page-homepage.php. entonces:
Otra cosa a tener en cuenta es si el archivo de plantilla está realmente almacenado dentro de otra carpeta dentro del tema. Lee mas
Una cosa más,
Template Name: Homepage
generalmente se usa para identificar la plantilla al crear una página o publicación.fuente
page-templates/page-homepage.php
es diferente a la plantilla en la raíz del tema.