Ich habe in einem meiner Projekte ein Eltern- und ein Kinderthema erstellt. Ich habe CSS und JavaScripts in meinem übergeordneten Thema wie folgt in die Warteschlange gestellt:
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' );
Nun möchte ich in meinem Child-Thema einige Stylesheets und Javascripts aus der Warteschlange entfernen. Also habe ich folgenden Code benutzt:
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' );
Tatsächlich steht die bootstrap.css.map
-Datei noch in der Warteschlange, aber das modernizr-js-Projekt-js wird nicht geladen, sodass es teilweise funktioniert. Wie kann ich das lösen?
Ich habe sogar versucht, Prioritäten zu setzen:
add_action( 'wp_print_scripts', 'project_dequeue_unnecessary_scripts', 11 );
Sie sind der Lösung sehr nahe, weil Sie auf dem richtigen Weg sind. Nur um ein bisschen zu optimieren:
Es gibt zwei solche Aktionshaken:
So können Sie es machen: Haken Sie sie anders ein:
//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' );
Und der richtige Weg ist es, sie abzumelden, neben dem Ausreihen. Nehmen Sie sie also zuerst aus der Warteschlange und melden Sie sie dann entsprechend ab.