Etiqueta condicional para verificar si se está usando 'page.php'
Estoy intentando verificar si se está utilizando la plantilla page.php o no. He probado con is_page_template( 'page.php' )
pero no funciona.
Tampoco puedo usar is_page()
porque solo quiero hacer algo cuando se usa page.php
, y no cuando se usa alguna otra plantilla personalizada de página.
Por favor, infórmame sobre esto y ¡gracias!
Edición: Debí mencionar antes que tengo un archivo llamado common-options.php
que se incluye en casi todas las plantillas (como index.php
, page.php
, single.php
y page_blog.php
). En este archivo estoy intentando hacer la verificación con el siguiente código:
if ( is_page_template( 'page.php' ) ) {
echo "¡Éxito!";
}
Pero no funciona cuando abro una página que usa la "Plantilla por defecto".

Yo mismo me encontré con el mismo problema y mi solución fue este código:
if(basename(get_page_template()) === 'page.php'){
}
basename(get_page_template())
obtiene el nombre del archivo de la plantilla de página (según https://codex.wordpress.org/Function_Reference/get_page_template) y luego verificamos si es igual a 'page.php'

Estoy de acuerdo, esta es una solución sólida pero podría ampliarse. +1

Al menos para mí, esto retorna true para cualquier página, incluso si uso una plantilla personalizada (diferente a page.php)

Esto es genial porque funciona incluso si la página está usando su plantilla por defecto.

Tienes dos funciones útiles: is_page()
y is_page_template()
.
La función is_page()
devolverá true
cuando estés en una página, y la función is_page_template()
devolverá false
si la entrada actual (puede ser una página) no está utilizando una plantilla personalizada.
Por lo tanto, solo necesitas usar ambas funciones juntas:
if ( is_page() && !is_page_template() ) {
// tu código
}

Pregunta antigua, pero interesante.
En general, no es común verificar la plantilla en WordPress. La plantilla es el resultado de la consulta principal que se ejecuta y establece el contexto de la solicitud.
Si fuera necesario, probablemente establecería algún tipo de bandera al inicio del page.php
, como declarar una constante para ello, para tener mi propio contexto.
Sin embargo, en general esto me hace pensar que cualquier lógica que requiera este tipo de solución debería considerarse para ajustarse a mecanismos y condicionales más comunes.

+1 Cualquier código que necesite esta condición probablemente podría colocarse incondicionalmente dentro de page.php

Esto funciona para mí en el searchbar.php
basename(get_page_template()) === ( 'page.php' )
Este es mi código completo:
if ( is_page_template( 'tpl-ads-home.php' ) || basename(get_page_template()) === ( 'page.php' ) || is_page_template( 'tpl-refine-search.php' ) || is_page_template( 'tpl-categories.php' ) || is_search() || is_404() || is_tax( APP_TAX_CAT ) || is_tax( APP_TAX_TAG ) || is_singular( APP_POST_TYPE ) ) :
$args = cp_get_dropdown_categories_search_args( 'bar' );

Código completo
<?php if ( is_page_template( 'tpl-ads-home.php' ) || basename(get_page_template()) === ( 'page.php' ) || is_page_template( 'tpl-refine-search.php' ) || is_page_template( 'tpl-categories.php' ) || is_search() || is_404() || is_tax( APP_TAX_CAT ) || is_tax( APP_TAX_TAG ) || is_singular( APP_POST_TYPE ) ) :
$args = cp_get_dropdown_categories_search_args( 'bar' ); ?>
