web-dev-qa-db-fra.com

Comment retirer correctement les scripts et les styles du thème enfant?

J'ai créé un thème pour les parents et un thème pour enfants dans l'un de mes projets. J'ai mis en file d'attente CSS et JavaScripts dans mon thème parent comme ci-dessous:

function project_necessary_scripts() {
    //Stylesheets
    wp_register_style( 'bootstrap-css', get_template_directory_uri() .'/css/bootstrap.min.css' );
    wp_register_style( 'bootstrap-map', get_template_directory_uri() .'/css/bootstrap.css.map' );
    wp_register_style( 'project-css', get_stylesheet_uri() );

    wp_enqueue_style( 'bootstrap-css' );
    wp_enqueue_style( 'bootstrap-map' );
    wp_enqueue_style( 'project-css' );

    //JavaScripts
    wp_register_script( 'modernizr-js', get_template_directory_uri() .'/js/modernizr-2.8.3.min.js', array(), '2.8.3' );
    wp_register_script( 'project-js', get_template_directory_uri() .'/js/project.min.js', array('jquery'), '20150401', true );

    wp_enqueue_script( 'modernizr-js' );
    wp_enqueue_script( 'project-js' );
}
add_action( 'wp_enqueue_scripts', 'project_necessary_scripts' );

Maintenant, dans mon thème Enfant je veux retirer certaines feuilles de style et javascripts. J'ai donc utilisé le code suivant:

function project_dequeue_unnecessary_scripts() {
    wp_dequeue_style( 'bootstrap-map' );
    wp_dequeue_script( 'modernizr-js' );
    wp_dequeue_script( 'project-js' );
}
add_action( 'wp_print_scripts', 'project_dequeue_unnecessary_scripts' );

Mais en réalité, le fichier bootstrap.css.map est toujours en file d'attente, mais le projet modernizr-js project-js ne se charge pas et fonctionne donc partiellement. Comment puis-je résoudre ça?

J'ai même essayé des priorités d'action:

add_action( 'wp_print_scripts', 'project_dequeue_unnecessary_scripts', 11 );
9
Mayeenul Islam

Vous êtes très proche de la solution car vous êtes sur le bon chemin. Juste pour Tweak un peu:

Il y a deux crochets d'action de ce type:

  1. wp_print_scripts , et
  2. wp_print_styles

Donc, la façon dont vous pouvez le faire, c'est: accrochez-les différemment:

//Dequeue Styles
function project_dequeue_unnecessary_styles() {
    wp_dequeue_style( 'bootstrap-map' );
        wp_deregister_style( 'bootstrap-map' );
}
add_action( 'wp_print_styles', 'project_dequeue_unnecessary_styles' );

//Dequeue JavaScripts
function project_dequeue_unnecessary_scripts() {
    wp_dequeue_script( 'modernizr-js' );
        wp_deregister_script( 'modernizr-js' );
    wp_dequeue_script( 'project-js' );
        wp_deregister_script( 'project-js' );
}
add_action( 'wp_print_scripts', 'project_dequeue_unnecessary_scripts' );

Et la bonne façon est de les désenregistrer à côté de la file d'attente. Alors commencez par les retirer de la file d'attente, puis annulez leur enregistrement en conséquence.

20
Mayeenul Islam