web-dev-qa-db-ja.com

親テーマのCSSファイルをデキューする方法

私の親テーマ(Starkers)は、削除しようとしているCSSファイルを追加しました(代わりに@importを使用したいので、スタイルをより簡単に上書きできます)。 Starkersのfunctions.phpには以下のものがあります。

add_action( 'wp_enqueue_scripts', 'script_enqueuer' );

function script_enqueuer() {
    wp_register_script( 'site', get_template_directory_uri().'/js/site.js', array( 'jquery' ) );
    wp_enqueue_script( 'site' );

    wp_register_style( 'screen', get_template_directory_uri().'/style.css', '', '', 'screen' );
    wp_enqueue_style( 'screen' );
}

私は子のfunctions.phpで以下を試しましたが、linkとscriptタグはまだheadセクションに現れます。

add_action('init', 'removeScripts');
function removeScripts() {
    wp_dequeue_style('screen');
    wp_deregister_script('site');
}

私は、それらが親ヘッダでハードコードされているかどうか、またそうではないかどうかを二重にチェックしました。

31
jmotes

代わりに@importを使用したいので、スタイルをより簡単にオーバーライドできます。

単に。しないでください。行う。それ。

あなたは単に同じフックに飛び込んでからスタイル/スクリプトを登録解除/デキューしてカスタムのものを投入するだけです。

function PREFIX_remove_scripts() {
    wp_dequeue_style( 'screen' );
    wp_deregister_style( 'screen' );

    wp_dequeue_script( 'site' );
    wp_deregister_script( 'site' );

    // Now register your styles and scripts here
}
add_action( 'wp_enqueue_scripts', 'PREFIX_remove_scripts', 20 );

スクリプトをデキューおよび登録解除する理由は簡単です。

デキュー後にこれらのハンドル('screen'または'site')のいずれかを使用できるようにするには、それらのハンドルも登録解除する必要があります。例:wp_deregister_style( 'screen' );wp_deregister_script( 'site' ); - peterjmag

37
kaiser