Tag condizionale per verificare se viene usato 'page.php'?
Sto cercando di verificare se il template page.php è in uso o meno. Ho provato is_page_template( 'page.php' )
ma non funziona.
Non posso usare is_page()
perché voglio eseguire qualcosa solo quando viene usato page.php
, e non quando viene usato qualche altro template personalizzato per Pagine.
Fatemi sapere come risolvere, grazie!
Modifica: Avrei dovuto specificare che ho un file chiamato common-options.php
che viene incluso in quasi tutti i template (come index.php
, page.php
, single.php
e page_blog.php
), in questo file sto provando a fare il controllo con questo codice:
if ( is_page_template( 'page.php' ) ) {
echo "successo!";
}
Ma non funziona quando apro una pagina che usa il "Template Predefinito".

Anch'io mi sono imbattuto nello stesso problema e la mia soluzione è stato questo codice:
if(basename(get_page_template()) === 'page.php'){
}
basename(get_page_template())
ottiene il nome del file del template della pagina (secondo https://codex.wordpress.org/Function_Reference/get_page_template) e poi verifichiamo se è uguale a 'page.php'

Potresti approfondire ulteriormente il funzionamento di questo codice?

Sono d'accordo, questa è una soluzione solida ma potrebbe essere ampliata. +1

Almeno per me, questo restituisce true per qualsiasi pagina, anche se uso un template personalizzato (diverso da page.php)

È fantastico perché funziona anche se la pagina utilizza il suo template predefinito.

Hai due funzioni utili: is_page()
e is_page_template()
.
La funzione is_page()
restituirà true
quando ti trovi su una pagina, mentre la funzione is_page_template()
restituirà false
se il post corrente (che può essere una pagina) non utilizza un template personalizzato.
Quindi, ti basta utilizzare entrambe queste funzioni insieme:
if ( is_page() && !is_page_template() ) {
// il tuo codice
}

Vecchia domanda, ma interessante.
In generale non è comune verificare il template in WordPress. Il template è il risultato della query principale eseguita e che imposta il contesto della richiesta.
Se necessario, probabilmente imposterei un flag all'inizio di page.php
, come dichiarare una costante per esso, per avere il mio contesto personalizzato.
Tuttavia, nel complesso mi fa pensare che qualsiasi logica che richieda questo tipo di approccio dovrebbe essere valutata per allinearla con meccanismi e condizionali più comuni.

+1 Qualsiasi codice che necessita di questa condizione potrebbe probabilmente essere inserito incondizionatamente all'interno di page.php

Non sono d'accordo. Nel mio caso, sto cercando di caricare uno script JS solo sulla page.php di default, all'interno di functions.php. Perché far caricare all'utente lo script su altre pagine se non ne ha bisogno? Penso che ci siano effettivamente casi d'uso per questo.

Questo funziona per me nella searchbar.php
basename(get_page_template()) === ( 'page.php' )
Questo è il mio codice 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' );

Codice 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' ); ?>
