2016-06-20 51 views
0

我想從某個插件wp_deregister所有樣式和腳本。取消註冊某個WordPress插件的所有樣式和腳本

例如

$plugin = getAllStyles('PLUGIN-NAME');  
foreach ($plugin as $value) { 
    wp_deregister_style($value); 
} 

$plugin = getAllScripts('PLUGIN-NAME');  
foreach ($plugin as $value) { 
    wp_deregister_script($value); 
} 

這可能嗎?

回答

1

是的,它可能與MU-PLUGINs,這看起來到請求url和有選擇地禁用插件。這是可能的,因爲MU插件是在普通插件之前加載的。

1)創建/wp-content/mu-plugins/Removeplugin.php

2新沐插件)添加以下代碼

/* 
    Plugin Name: plugins remover 
    Plugin URI: 
    Description: Removes plugin 
    Author: Author name 
    Version: 1.0 
    Author URI: 
*/ 

3)現在添加動作鉤option_active_plugins

add_filter('option_active_plugins', 'disable_plugin_callback_fun'); 
function disable_plugin_callback_fun($plugins){ 
    $key = array_search('plugin_directory_name/plugin_filename.php' , $plugins); 
    if (false !== $key) unset($plugins[$key]); 
} 

例如,如果你刪除的聯繫人form 7插件css和js

add_filter('option_active_plugins', 'disable_plugin_callback_fun'); 
    function disable_plugin_callback_fun($plugins){ 
     $key = array_search( 'contact-form-7/wp-contact-form-7.php', $plugins); 
    if (false !== $key) { unset($plugins[$key]);} 

} 

注意:此動作鉤禁用站點的插件,所以我建議從選定的頁面加載插件,如波紋管代碼檢查當前頁面。

$current_page = add_query_arg(array()); 
add_filter('option_active_plugins', 'disable_plugin_callback_fun'); 
     function disable_plugin_callback_fun($plugins){ 
     $current_page = add_query_arg(array()); 
     if($current_page!='contact'){//contact us page url where to load plugin only 
     $key = array_search( 'contact-form-7/wp-contact-form-7.php', $plugins); 
     if (false !== $key) { unset($plugins[$key]);} 
     } 
    } 

欲瞭解更多信息,如果您需要從插件刪除所有隻風格和腳本檢查這個https://wordpress.stackexchange.com/questions/114345/load-plugin-selectively-for-pages-or-posts-etc

編輯

。需要找到所有的CSS和jQuery,並將其放在波紋管函數中。

沒有其他辦法可以從插件刪除所有的風格和腳本

注:這只是工作的時候插件用於添加樣式或JS期運用wp_enqueue_style()和wp_enqueue_script()其他明智的這段代碼是不工作

add_action('wp_print_scripts', 'disable_pluginsjs_selectively', 100); 
function disable_pluginsjs_selectively() { 
    wp_deregister_script(Name of the enqueued jQuery); 
    wp_dequeue_style('Name of the enqueued stylesheet'); 
} 
+0

但代碼將完全禁用插件(在特殊頁面上)。我只想從插件中刪除所有樣式和腳本,而不是插件本身。 – Peter

+0

@Peter檢查我的編輯答案 –