問題描述

我的父主題 (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');
}

我已經仔細檢查,看看他們是否是在父標題中硬編碼,而不是它們。

最佳解決方案

I want to use @import instead so I can override styles more easily

只是。別。做。那。

你只需跳入同一個鈎子,然後註銷/排除樣式/腳本,並拋出您的自定義。

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

dequeue-ing 和註銷腳本的原因很簡單:

Note that if you’d like to be able to use either of those handles ('screen' or 'site') after dequeuing them, you’ll need to deregister them too. For instance: wp_deregister_style( 'screen' ); and wp_deregister_script( 'site' );peterjmag

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。