J'essaie de retirer certains scripts d'un plugin dont je n'ai besoin que pour la page d'accueil. Pour la page d’accueil, j’utilise un fichier appelé front-page.php
avec ce texte en haut pour en faire un modèle home
:
<?php
/*
Template Name: Home
*/
?>
La fonction supprime les scripts, mais les supprime sur toutes les pages. Je veux que les scripts ne se chargent que pour la page d'accueil. J'ai essayé if ( !is_page_template('home.php') ) {
et aussi if ( !is_front_page() ) {
mais ils ont tous les deux produit le même résultat que le premier.
function wpcyclone_dequeue_script() {
wp_dequeue_script( 'jquery-cycle2' );
wp_dequeue_script( 'jquery-cycle2-swipe' );
wp_dequeue_script( 'cyclone-client' );
}
if ( !is_page('Home') ) {
add_action( 'wp_print_scripts', 'wpcyclone_dequeue_script', 100 );
}
Où est-ce que je me suis trompé?
Juste quelques notes sur votre code
Vous devez retirer de la file d'attente et désenregistrer un script pour le supprimer complètement du $wp_scripts
global
Vous ne devriez pas utiliser wp_print_scripts
, c'est le mauvais hook. Vous devriez utiliser wp_enqueue_scripts
N'emballez pas votre action dans un conditionnel. Votre balise conditionnelle peut être définie sur early ou sur late et provoquer un comportement inattendu.
Il existe une balise conditionnelle dédiée pour la page d'accueil, is_front_page()
, que vous pouvez utiliser pour vérifier si votre page est la page d'accueil.
Votre code devrait ressembler à quelque chose comme ça
add_action( 'wp_enqueue_scripts', 'my_deregister_javascript', PHP_INT_MAX );
function my_deregister_javascript() {
if ( !is_front_page() ) {
wp_dequeue_script( 'jquery-cycle2' );
wp_deregister_script( 'jquery-cycle2' );
wp_dequeue_script( 'jquery-cycle2-swipe' );
wp_deregister_script( 'jquery-cycle2-swipe' );
wp_dequeue_script( 'cyclone-client' );
wp_deregister_script( 'cyclone-client' );
}
}
Peu importe, je l'ai compris par un autre moyen:
add_action( 'wp_print_scripts', 'my_deregister_javascript', 100 );
function my_deregister_javascript() {
if ( !is_page('Home') ) {
wp_deregister_script( 'jquery-cycle2' );
wp_deregister_script( 'jquery-cycle2-swipe' );
wp_deregister_script( 'cyclone-client' );
}
}
Toujours curieux de savoir pourquoi la méthode précédente n'a pas fonctionné.