Убрать JS и CSS с определенных страниц

Подскажите, пожалуйста, как можно запретить подключение некоторых внешних и внутренних файлов на определенных страницах, для авторизованных и для кастомной роли пользователя?

Сорри, у меня нулевые навыки в программировании, поэтому просто опишу логику:

если post id 3847575 или 585775 или 5757575
то запретить
/wp-content/plugins/some/noneed.js
https://www.site.com/deleteme.js
/css/noneed.css

также если post id 3847575 или 585775
то запретить
/wp-content/plugins/some/noneed.js
https://www.site.com/deleteme2.js

также если юзер авторизован
то запретить
https://www.gstatic.com/recaptcha/recaptcha.js
/wp-content/plugins/some/noneed.js

также если роль юзера модератор
то запретить
https://www.site.com/deleteme3.js
/wp-content/plugins/some/noneed.js

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

Автор решения: KAGG Design

Надо знать handles ваших скриптов. Найти их можно в коде страницы (Ctrl+U). Пример:

<script src='http://test.test/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?ver=5.5.2' id='woocommerce-js'></script>

Смотрим в id, там всегда handle-js. Значит, handle скрипта в примере - woocommerce.

Далее, в functions.php дочерней темы добавить примерно такой код:


function my_wp_enqueue_scripts() {
    if ( is_page( [ 22, 33, 44 ] ) ) {
        wp_dequeue_script( 'handle1' );
        wp_deregister_script( 'handle1' );

        wp_dequeue_script( 'handle2' );
        wp_deregister_script( 'handle2' );
    }

    if ( is_page( [ 55, 77 ] ) ) {
        wp_dequeue_script( 'handle3' );
        wp_deregister_script( 'handle3' );
    }

    if ( is_user_logged_in() ) {
        wp_dequeue_script( 'handle4' );
        wp_deregister_script( 'handle4' );
    }
}

add_action( 'wp_enqueue_scripts', 'my_wp_enqueue_scripts', - PHP_INT_MAX );

Про роль пользователя ответить не могу - такой роли, как модератор, в чистом WP нет. Эта роль из какого-то плагина. Надо знать, из какого, и как правильно она называется на английском.

→ Ссылка