Adaugă un action hook condițional - doar când este folosit home.php

10 oct. 2012, 21:29:28
Vizualizări: 16.3K
Voturi: 4

Încerc să adaug un action hook în functions.php doar dacă pagina folosește home.php, dar următoarea soluție nu funcționează

if ( is_page_template("home.php") ) {

// faci ceva

}

Pentru a verifica dacă fișierul folosit este home.php, fac asta

global $template; echo $template; 
0
Toate răspunsurile la întrebare 3
1

Folosește is_home în loc, deoarece is_page_template nu va funcționa pentru home.php întrucât, tehnic vorbind, acesta nu este un șablon de pagină în sensul tradițional.

add_action('template_redirect', 'are_we_home_yet', 10);
function are_we_home_yet(){
        if ( is_home() ) {
        //logica ta aici
    }
}

Revizuit:

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' ) {
        //execută logica ta aici
    }
}

Răspunsul revizuit este de fapt ceea ce ai nevoie cu adevărat, acesta va verifica dacă te afli pe pagina principală, în plus va obține fișierul șablon care este inclus și va verifica dacă acel fișier este într-adevăr fișierul tău home.php și dacă da, poți continua cu logica ta...

10 oct. 2012 23:14:55
Comentarii

Ai vrut să spui: is_home() && $template_file == 'home.php' ?

Bryan Bryan
14 iul. 2017 00:49:44
0

Am avut această problemă. Voiam să includ scripturile Jssor Slider doar când se încărca pagina de acasă. Foloseam și un fișier home.php și am rezolvat-o astfel:

  1. Am redenumit fișierul meu home.php în altceva, cum ar fi home_mysite.php setând un nume pentru acest șablon de pagină în antetul cu comentarii al fișierului, astfel:
/**
* Template Name: Pagina de Acasă
*/
  1. Apoi am creat o pagină nouă goală setând Pagina de Acasă ca șablon de pagină.
  2. Am configurat Wordpress să afișeze noua mea pagină ca pagină frontală (Setări > Citire > O pagină statică > Pagina frontală: Pagina de Acasă)
  3. Apoi, în final, am realizat că era necesar să pun codul condițional în funcția mea pentru ca is_page('home') să funcționeze. ('home' este slug-ul noii mele pagini de acasă goale). Adică, când încercam să adaug acțiunea condițional, nu puteam verifica dacă pagina mea de acasă se încărca, is_page('home') întotdeauna returna false. A funcționat când am schimbat logica pentru a adăuga întotdeauna acțiunea dar să încarce scripturile condițional.

Codul care a funcționat în functions.php:

function mysite_jssor() {
    //încarcă scriptul condițional
    if ( is_page('home') ) {
        wp_enqueue_script( 'jssor', get_stylesheet_directory_uri() . '/js/jssor.js', array( 'jquery' ), false, false );
    }
}
//adaugă întotdeauna acțiunea
add_action( 'wp_enqueue_scripts', 'mysite_jssor' );

În acest fel, scripturile mele Jssor sunt încărcate doar când accesez pagina de acasă, nu și când accesez alte pagini sau articole.

8 sept. 2015 03:12:57
0

Funcția pe care o căutați este is_front_page()

add_action('template_redirect', 'work_only_on_front_page', 10);
   function work_only_on_front_page(){
    if ( is_front_page() ) {
    // Codul tău
   }
}
18 apr. 2018 17:33:09