Отменить регистрацию всех стилей и скриптов из определенного плагина Wordpress

Я хочу wp_deregister все стили и скрипты из определенного плагина.

Например

$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-PLUGIN, который просматривает URL-адрес запроса и выборочно отключает плагины. Это возможно, потому что плагины MU загружаются раньше обычных плагинов.

1) Создать новый Mu-плагин в /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] );
}

Пример, если вы удалите контактную форму 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'); 
}
Другие вопросы по тегам