Убрать 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 шт):
Надо знать 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 нет. Эта роль из какого-то плагина. Надо знать, из какого, и как правильно она называется на английском.