Bagaimana cara membuat skrip dan gaya dalam tema anak dengan benar?

11

Saya membuat tema orang tua dan tema anak di salah satu proyek saya. Saya enqueued CSS dan JavaScripts di tema orang tua saya seperti di bawah ini:

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

Sekarang, dalam tema Anak saya, saya ingin membagikan beberapa lembar gaya dan javascript. Jadi saya menggunakan kode berikut:

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

Tetapi sebenarnya bootstrap.css.mapfile tersebut masih enqueuing, tetapi project-js modernizr-js tidak memuat, jadi ini berfungsi sebagian. Bagaimana saya bisa menyelesaikannya?

Saya bahkan mencoba prioritas tindakan:

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

Jawaban:

24

Anda sangat dekat dengan solusi, karena Anda berada di jalan yang benar. Hanya untuk mengubah sedikit:

Ada dua kait tindakan seperti itu:

  1. wp_print_scripts, dan
  2. wp_print_styles

Jadi cara Anda dapat melakukannya, adalah: kaitkan mereka secara berbeda:

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

Dan cara yang benar adalah dengan membatalkan pendaftaran mereka di samping dequeuing. Jadi pertama-tama buat mereka, lalu deregister mereka sesuai.

Mayeenul Islam
sumber
menurut dokumen : Sejak WordPress 3.3, wp_print_scripts tidak boleh digunakan untuk enqueue styles atau skrip. Gunakan skrip wp_enqueue_sebagai gantinya.
rok
@ user1264304 Kami tidak memberikan hal-hal di sini, kami hal-hal yang dequeueing.
Mayeenul Islam
1
ya, tetapi menurut tautan , orang harus menggunakanadd_filter( 'wp_enqueue_scripts', 'project_dequeue_unnecessary_scripts')
rok