Làm thế nào để viết đúng các kịch bản và kiểu trong chủ đề con?


11

Tôi đã tạo một chủ đề phụ huynh và một chủ đề con trong một dự án của tôi. Tôi mê mẩn CSS và JavaScripts trong chủ đề gốc của mình như dưới đây:

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

Bây giờ, trong chủ đề Con tôi, tôi muốn loại bỏ một số bảng định kiểu và javascripts. Vì vậy, tôi đã sử dụng mã sau đây:

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

Nhưng thực sự bootstrap.css.maptập tin vẫn còn rất hấp dẫn, nhưng dự án-js Modernizr-js không tải, vì vậy nó hoạt động một phần. Làm thế nào tôi có thể giải quyết điều đó?

Tôi thậm chí đã thử các ưu tiên hành động:

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

Câu trả lời:


24

Bạn đang rất gần với giải pháp, bởi vì bạn đang đi đúng hướng. Chỉ cần tinh chỉnh một chút:

Có hai móc hành động như vậy:

  1. wp_print_scripts
  2. wp_print_styles

Vì vậy, cách bạn có thể làm là: hook 'em khác nhau:

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

Và cách chính xác là hủy đăng ký chúng bên cạnh việc tẩy trang. Vì vậy, đầu tiên dequeue chúng, và sau đó hủy đăng ký chúng cho phù hợp.


theo tài liệu : Kể từ WordPress 3.3, wp_print_scripts không nên được sử dụng để liệt kê các kiểu hoặc tập lệnh. Sử dụng wp_enqueue_scripts thay thế.
rok

@ user1264304 Chúng tôi không mê hoặc mọi thứ ở đây, chúng tôi đang xử lý mọi thứ.
Hồi giáo Mayeenul

1
có, nhưng theo liên kết , người ta nên sử dụngadd_filter( 'wp_enqueue_scripts', 'project_dequeue_unnecessary_scripts')
rok
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.