Wie werden Skripte und Stile im untergeordneten Thema ordnungsgemäß aus der Warteschlange entfernt?

11

Ich habe in einem meiner Projekte ein übergeordnetes und ein untergeordnetes Thema 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' );

Jetzt möchte ich in meinem Child-Thema einige Stylesheets und Javascripts aus der Warteschlange entfernen. Also habe ich folgenden Code verwendet:

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' );

bootstrap.css.mapTatsächlich befindet sich die Datei noch in der Warteschlange, aber das Projekt modernizr-js-js wird nicht geladen, sodass es teilweise funktioniert. Wie kann ich das lösen?

Ich habe sogar Aktionsprioritäten ausprobiert:

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

Antworten:

24

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:

  1. wp_print_scripts, und
  2. wp_print_styles

Die Art und Weise, wie Sie es tun können, ist: 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, sie neben der Warteschlange abzumelden. Also erst in die Warteschlange stellen und dann entsprechend abmelden.

Mayeenul Islam
quelle
Laut Dokumentation : Seit WordPress 3.3 sollte wp_print_scripts nicht mehr zum Einreihen von Stilen oder Skripten verwendet werden. Verwenden Sie stattdessen wp_enqueue_scripts.
Rok
@ user1264304 Wir stellen hier keine Dinge in die Warteschlange, wir stellen Dinge in die Warteschlange.
Mayeenul Islam
1
ja, aber laut link sollte man verwendenadd_filter( 'wp_enqueue_scripts', 'project_dequeue_unnecessary_scripts')
rok