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 );
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:
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.