Як правильно відстрочити сценарії та стилі у дочірній темі?


11

Я створив батьківську тему та дочірню тему в одному зі своїх проектів. Я застосував CSS та JavaScripts у своїй батьківській темі, як нижче:

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

Тепер у моїй темі Child я хочу відписати деякі таблиці стилів та javascripts. Тому я використав наступний код:

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.mapфайл все ще зачаровує, але projekt modernizr-js project-js не завантажується, тому він працює частково. Як я можу це вирішити?

Я навіть спробував пріоритети дій:

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

Відповіді:


24

Ви дуже наближаєтесь до рішення, адже ви на правильному шляху. Просто трішки підправити:

Є два таких гачки дії:

  1. wp_print_scripts, і
  2. wp_print_styles

Отже, спосіб зробити це: підключити їх по-різному:

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

І правильний спосіб - зняти їх з реєстрації поруч із видаленням. Тож спочатку скасуйте їх, а потім скасуйте їх відповідно.


згідно з документами : Оскільки WordPress 3.3, wp_print_scripts не слід використовувати для задавання стилів або сценаріїв. Використовуйте натомість wp_enqueue_scripts.
rok

@ user1264304 Ми не заперечуємо тут речей, ми припиняємо їх.
Mayeenul Islam

1
так, але за посиланням , слід скористатисяadd_filter( 'wp_enqueue_scripts', 'project_dequeue_unnecessary_scripts')
rok
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.