Отключение JS и CSS на отдельных страницах WP

Всем привет. На сайте есть куча плагинов, которые нужны только на определенных страницах (или типах записей) но подключают свои стили и скрипты глобально, от чего он тормозит... Можно ли, к примеру, в functins.php вписать какой-то код, который будет блокировать подключение локальных и внешних CSS/JS ?

Вроде такого:

if ( page_id=(123, 3844, 4857) > remove_this  
     {
        /wp_content/plugins/someplugin/someJS.js;
        /wp_content/plugins/someplugin/css.css;
        https://ajax.aspnetcdn.com/jquery-ui.min.js;
     } 
    
    elseif  page_id=(475, 675) > remove_this  
        /wp_content/plugins/someplugin/other.css;
        https://ajax.aspnetcdn.com/noneed.min.js;
    }
    
    elseif  post_type is (costum, onemore) > remove_this  
        /wp_content/plugins/someplugin/deletme.css;
        https://ajax.aspnetcdn.com/jquery-ui.min.js;
    } 

на код внимания не обращайте, я в этом "ноль", он просто для демонстрации логики)


Ответы (1 шт):

Автор решения: Valerii Vasiliev

дя этого есть специальные функции wp_dequeue_style(), wp_dequeue_script()

фрагмент кода для отключения ненужных стилей-скриптов вставить в functions.php

 add_action(
            'wp_enqueue_scripts',
             function() {
                 if (is_page(123) || is_page(3844) || is_page(4857)) {
                    
                    // Отключаем стили
                    wp_dequeue_style( 'style-name' );
                    
                    wp_dequeue_style( 'style-name2' );
                    
                    // Отключаем скрипты
                    wp_dequeue_script( 'script-name' );
                    
                    wp_dequeue_script( 'script-name2' );
                    
                 } elseif (is_page(475) || is_page(675)) {
                    
                    // Отключаем стили
                    wp_dequeue_style( 'style-name' );
                    
                    wp_dequeue_style( 'style-name2' );
                    
                    // Отключаем скрипты
                    wp_dequeue_script( 'script-name' );
                    
                    wp_dequeue_script( 'script-name2' );
                    
                 } elseif (is_singular( array( 'costum', 'onemore' )) {
                    
                    // Отключаем стили
                    wp_dequeue_style( 'style-name' );
                    
                    wp_dequeue_style( 'style-name2' );
                    
                    // Отключаем скрипты
                    wp_dequeue_script( 'script-name' );
                    
                    wp_dequeue_script( 'script-name2' );
                 }
            },
            99
       );

В качестве 'style-name', 'style-name2', 'script-name', 'script-name2' указывать названия стилей-скриптов, которые используются при их подключение.

Названия скриптов и стилей хранятся в переменных $wp_scripts, $wp_styles

Добавьте в теме где-нибудь следующий фрагмент для получения названий

$result = [];
    $result['scripts'] = [];
    $result['styles'] = [];

    // Print all loaded Scripts
    global $wp_scripts;
    foreach( $wp_scripts->queue as $script ) :
       $result['scripts'][] =  $wp_scripts->registered[$script]->src . ";";
    endforeach;

    // Print all loaded Styles (CSS)
    global $wp_styles;
    foreach( $wp_styles->queue as $style ) :
       $result['styles'][] =  $wp_styles->registered[$style]->src . ";";
    endforeach;
→ Ссылка