Aggiungi hook condizionalmente - solo quando home.php è in uso
Sto cercando di aggiungere un hook azione in functions.php solo se la pagina utilizza home.php
ma il seguente codice non funziona
if ( is_page_template("home.php") ) {
// esegui azioni
}
Per verificare che il file in uso sia effettivamente home.php
utilizzo questo codice
global $template; echo $template;
Utilizza is_home
invece, poiché is_page_template
non funzionerà per home.php
in quanto tecnicamente non è un template di pagina nel senso tradizionale.
add_action('template_redirect', 'are_we_home_yet', 10);
function are_we_home_yet(){
if ( is_home() ) {
//la tua logica qui
}
}
Revisionato:
add_action('template_redirect', 'are_we_home_yet', 10);
function are_we_home_yet(){
global $template;
$template_file = basename((__FILE__).$template);
if ( is_home() && $template_file = 'home.php' ) {
//esegui la tua logica qui
}
}
La risposta revisionata è in realtà ciò di cui hai veramente bisogno, verificherà se sei nella pagina home, oltre a ottenere il file template incluso e controllare se quel file è effettivamente il tuo home.php
e se è così, puoi procedere con la tua logica...

Ho avuto questo problema. Volevo includere gli script di Jssor Slider solo durante il caricamento della pagina home. Stavo usando anche un file home.php e l'ho risolto in questo modo:
- Ho rinominato il mio file home.php in qualcos'altro, come home_miosito.php impostando un nome per questo template di pagina nel commento all'inizio del file, come:
/** * Template Name: Home */
- Poi ho creato una nuova pagina vuota impostando Home come template di pagina.
- Ho configurato Wordpress per mostrare la mia nuova pagina come pagina principale (
Impostazioni > Lettura > Una pagina statica > Pagina iniziale: Home
) - Infine, ho capito che era necessario inserire il codice condizionale all'interno della mia funzione affinché
is_page('home')
funzionasse. ('home' è lo slug della mia nuova pagina home vuota). Cioè, quando cercavo di aggiungere condizionalmente l'azione, non riuscivo a verificare se la mia pagina home veniva caricata,is_page('home')
restituiva semprefalse
. Ha funzionato quando ho cambiato la logica per aggiungere sempre l'azione ma caricare condizionalmente gli script.
Il codice che ha funzionato in functions.php:
function mysite_jssor() {
//carica condizionalmente lo script
if ( is_page('home') ) {
wp_enqueue_script( 'jssor', get_stylesheet_directory_uri() . '/js/jssor.js', array( 'jquery' ), false, false );
}
}
//aggiunge sempre l'azione
add_action( 'wp_enqueue_scripts', 'mysite_jssor' );
In questo modo i miei script Jssor vengono caricati solo quando si accede alla pagina home, non quando si accede ad altre pagine o articoli.
