J'essaie d'ajouter un crochet d'action dans functions.php uniquement si la page est home.php
mais que ce qui suit ne fonctionne pas.
if ( is_page_template("home.php") ) {
// do stuff
}
Pour m'assurer que le fichier utilisé est bien home.php
je le fais
global $template; echo $template;
Utilisez plutôt is_home
, car is_page_template
ne fonctionnera pas pour home.php
car ce n'est techniquement pas un modèle de page au sens traditionnel du terme.
add_action('template_redirect', 'are_we_home_yet', 10);
function are_we_home_yet(){
if ( is_home() ) {
//your logic here
}
}
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' ) {
//do your logic here
}
}
La réponse révisée correspond en fait à ce dont vous avez réellement besoin. Elle vérifie si vous êtes sur la page d’accueil, en plus d’obtenir le fichier de modèle inclus et de vérifier si ce fichier est bien votre fichier home.php
et si oui, vous pouvez aller à propos de votre logique ...
La fonction que vous recherchez est is_front_page()
add_action('template_redirect', 'work_only_on_front_page', 10);
function work_only_on_front_page(){
if ( is_front_page() ) {
// Your code
}
}
J'ai eu ce problème. Je voulais inclure les scripts Jssor Slider uniquement lors du chargement de la page d'accueil. J'utilisais un home.php aussi, et je l'ai résolu de cette façon:
/** * Nom du modèle: Home */
Settings > Reading > A static page > Front page: Home
)is_page('home')
fonctionne. ( 'home' est ma nouvelle page d'accueil vide slug ). En d’autres termes, lorsque j’essayais d’ajouter conditionnellement l’action, je n’étais pas en mesure de vérifier si la page d’accueil était en train de se charger. is_page('home')
renvoyait toujours false
. Cela fonctionnait lorsque j'ai changé la logique pour toujours ajouter l'action mais mettre en file d'attente les scripts.Le code qui a fonctionné sur functions.php :
function mysite_jssor() {
//conditionally enqueue the script
if ( is_page('home') ) {
wp_enqueue_script( 'jssor', get_stylesheet_directory_uri() . '/js/jssor.js', array( 'jquery' ), false, false );
}
}
//always adds the action
add_action( 'wp_enqueue_scripts', 'mysite_jssor' );
De cette façon, mes scripts Jssor ne sont chargés que lors de l'accès à la page d'accueil, pas lors de l'accès à d'autres pages ou à des publications.