問題描述
我的父主題 (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' );andwp_deregister_script( 'site' );– peterjmag
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。