親テーマのCSSファイルをデキューするにはどうすればよいですか?


33

親テーマ(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で次のことを試しましたが、リンクとスクリプトタグはまだヘッドセクションに表示されます。

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

親ヘッダーにハードコードされているかどうかを確認するために、二重チェックを行いました。

回答:


39

代わりに@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


1
おそらく簡単ですが、公式のWPドキュメントにはcodex.wordpress.org/Child_Themesがありません。彼らは子テーマをデキューおよび登録解除については話さない
gagarine

-1

親テーマのスタイルシートを削除して子テーマのスタイルシートに置き換えるか、単に親のスタイルシートをこれまでのロードから削除する方法を次に示します。

Starkerテーマのfunctions.php:

add_action( 'wp_enqueue_scripts', 'script_enqueuer' );

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

スタイルと呼ばれる「スクリーン」というハンドルを覚えておいてください

親テーマを子テーマのスタイルシートに置き換える

Starker-Childテーマのfunctions.php:

function custom_starkers_styles() {

    //Remove desired parent styles
    wp_dequeue_style( 'screen');

    //Replace with custom child styles
    wp_register_style( 'screen-child',​ trailingslashit( get_template_directory_uri() ). 'screen.css' );
    wp_enqueue_style( 'screen-child​'​);
}

add_action( 'wp_enqueue_scripts','custom_starkers_styles', 20 );

親テーマのスタイルシートを削除

Starker-Childテーマのfunctions.php:

function remove_starkers_styles() {

    //Remove desired parent styles
    wp_dequeue_style( 'screen');

}

add_action( 'wp_enqueue_scripts','remove_starkers_styles', 20 );

子テーマのadd_action()の優先度を20(デフォルトは10)に設定します。親テーマがキューに入れた後に実行するためです。優先度が高いほど、後で実行されます。20> 10なので、子テーマのアクションは、親テーマが既に実行された後に常に実行されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.