Come accodare correttamente script e stili nel tema figlio?


11

Ho creato un tema genitore e un tema figlio in uno dei miei progetti. Ho accodato CSS e JavaScript nel mio tema principale come di seguito:

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

Ora, nel tema del mio bambino voglio dequeue alcuni fogli di stile e javascript. Quindi ho usato il seguente codice:

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

Ma in realtà il bootstrap.css.mapfile si sta ancora accodando, ma il progetto modernizr-js-js non si sta caricando, quindi funziona parzialmente. Come posso risolverlo?

Ho anche provato le priorità d'azione:

add_action( 'wp_print_scripts', 'project_dequeue_unnecessary_scripts', 11 );

Risposte:


24

Sei molto più vicino alla soluzione, perché sei sulla strada giusta. Solo per modificare un po ':

Esistono due di questi hook di azione:

  1. wp_print_scripts, e
  2. wp_print_styles

Quindi il modo in cui puoi farlo è: agganciarli in modo diverso:

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

E il modo corretto è di annullare la registrazione accanto al dequeue. Quindi prima li dequeue e poi li cancella di conseguenza.


secondo i documenti : da WordPress 3.3, wp_print_scripts non dovrebbe essere usato per accodare stili o script. Utilizzare invece wp_enqueue_scripts.
rok

@ user1264304 Non stiamo accodando le cose qui, stiamo accodando le cose.
Mayeenul Islam

1
sì, ma secondo il link , si dovrebbe usareadd_filter( 'wp_enqueue_scripts', 'project_dequeue_unnecessary_scripts')
rok
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.