web-dev-qa-db-fra.com

Supprimer les scripts pour toutes les pages sauf la page d'accueil

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é?

1
Desi

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' );
    }
}
7
Pieter Goosen

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

1
Desi