Aggiungi hook condizionalmente - solo quando home.php è in uso

10 ott 2012, 21:29:28
Visualizzazioni: 16.3K
Voti: 4

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;
0
Tutte le risposte alla domanda 3
1

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...

10 ott 2012 23:14:55
Commenti

Intendevi : is_home() && $template_file == 'home.php' ?

Bryan Bryan
14 lug 2017 00:49:44
0

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:

  1. 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
*/
  1. Poi ho creato una nuova pagina vuota impostando Home come template di pagina.
  2. Ho configurato Wordpress per mostrare la mia nuova pagina come pagina principale (Impostazioni > Lettura > Una pagina statica > Pagina iniziale: Home)
  3. 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 sempre false. 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.

8 set 2015 03:12:57
0

La funzione che stai cercando è is_front_page()

add_action('template_redirect', 'work_only_on_front_page', 10);
   function work_only_on_front_page(){
    if ( is_front_page() ) {
    // Il tuo codice
   }
}
18 apr 2018 17:33:09