2014-02-13 93 views
1

在wp插件中,我在插件的php文件中看到以下代碼。WordPress插件優化代碼

public function register_plugin_scripts() { 
     /*** Styles ***/ 
     $cyclone_css = add_query_arg(array('cyclone_templates_css' => 1), home_url('/')); 
     wp_register_style('cyclone-slider-plugin-styles', $cyclone_css);//contains our combined css from ALL templates 
     wp_enqueue_style('cyclone-slider-plugin-styles'); 

     /*** Scripts ***/ 
     wp_register_script('cycle', $this->plugin_url.'js/jquery.cycle.all.min.js', array('jquery')); 
     wp_enqueue_script('cycle'); 


} 

現在,我想改變它的一些。現在,這個插件被用於每一個頁面。暗示1)組合的CSS 2)jquery.cycle.all.min.js被請求的每一頁。但是,我只將這個插件用於主頁面。那麼,我該如何解決這個問題,使得CSS文件+ js只能被加載到主頁面,而沒有其他任何東西。

接下來,我不想結合所有模板的CSS。相反,它應該指向一個選定的位置。怎麼做?。提前致謝。插件是Cyclone Slider 2.

回答

0

如果您很樂意直接編輯插件代碼,那麼將wp_enqueue_script()調用置於主頁上會很簡單。

public function register_plugin_scripts() { 
     /*** Styles ***/ 
     $cyclone_css = add_query_arg(array('cyclone_templates_css' => 1), home_url('/')); 
     wp_register_style('cyclone-slider-plugin-styles', $cyclone_css);//contains our combined css from ALL templates 


     /*** Scripts ***/ 
     wp_register_script('cycle', $this->plugin_url.'js/jquery.cycle.all.min.js', array('jquery')); 
if (is_front_page()){ 
     wp_enqueue_style('cyclone-slider-plugin-styles');  
     wp_enqueue_script('cycle'); 
} 
} 

但是,你幾乎可以肯定要編輯的插件,因爲當插件更新您的更改將被覆蓋。

因此,我會使用wp_dequeue_script和wp_dequeue_style來停止腳本加載的地方,你不想讓他們。

Wordpress Function reference,你可以在你的主題function.php文件或類似添加以下代碼:

/** 
* Dequeue a queued script. 
* 
* Hooked to the wp_print_scripts action, with a late priority (100), 
* so that it is after the script was enqueued. 
*/ 
function wpcyclone_dequeue_script() { 
    wp_dequeue_script('cycle'); 
    wp_dequeue_script('cyclone-slider-plugin-styles'); 
} 
if (!is_front_page()){ 
    add_action('wp_print_scripts', 'wpcyclone_dequeue_script', 100); 
}