web-dev-qa-db-ja.com

子テーマのスクリプトやスタイルを正しくデキューする方法

私のプロジェクトの1つでは、親テーマと子テーマを作成しました。以下のように、CSSとJavaScriptを親テーマに入れました。

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

今、私の 子のテーマで 私はいくつかのスタイルシートとJavaScriptをデキューしたいです。だから私は次のコードを使用しました:

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ファイルはまだキューに入っていますが、modernizr-js project-jsはロードされていないので、部分的に機能しています。どうすれば解決できますか?

私も行動の優先順位を試しました:

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

あなたは正しい道を進んでいるので、あなたは解決策に非常に近いです。ちょっと微調整するだけです:

そのようなアクションフックは2つあります。

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

そして正しい方法はそれらをデキューすること以外に登録を解除することです。そのため、まずそれらをデキューしてから、それに従って登録を解除します。

20
Mayeenul Islam