子テーマのスクリプトとスタイルを適切にデキューする方法は?


11

プロジェクトの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' );

今、私のChildテーマで、いくつかのスタイルシートと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 );

回答:


24

あなたは正しい道にいるので、あなたは解決策に非常に近いです。少し微調整するだけです:

そのようなアクションフックは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' );

そして正しい方法は、デキューのほかに登録を解除することです。そのため、最初にそれらをデキューし、次にそれに応じて登録解除します。


ドキュメントによると:WordPress 3.3以降、スタイルまたはスクリプトをエンキューするためにwp_print_scriptsを使用しないでください。代わりにwp_enqueue_scriptsを使用してください。
韓国

@ user1264304ここではキューに入れているのではなく、キューから取り出します。
Mayeenul Islam 2018

1
はい、しかしリンクによれば、使用する必要がありますadd_filter( 'wp_enqueue_scripts', 'project_dequeue_unnecessary_scripts')
rok
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.