Отключение скриптов на определенной странице
Мне нужно исключить определенные скрипты на конкретной странице. Я пробовал этот код, но он не работает - при проверке страницы скрипты все еще загружаются в футер.
Вот мой код в functions.php:
add_action( 'wp_enqueue_scripts', 'my_deregister_javascript', 100 );
function my_deregister_javascript() {
if ( !is_page('my-page') ) {
wp_deregister_script( 'isotope' );
wp_deregister_script( 'anystretch' );
wp_deregister_script( 'imgliquid' );
wp_deregister_script( 'retina' );
wp_deregister_script( 'menutron' );
wp_deregister_script( 'imagesloaded' );
wp_deregister_script( 'myfunctions' );
}
}
Что я упускаю? Спасибо!

У вас есть базовая ошибка в коде. Следующий код
if ( !is_page('my-page') ) {
означает, что если вы не на этой странице, отключите скрипты. Посмотрите на операторы PHP
! -> Не !$x Истина, если $x не истина
Также, почему бы не исключить эту конкретную страницу при первоначальной загрузке скриптов, например так:
add_action( 'wp_enqueue_scripts', 'my_register_javascript', 100 );
function my_register_javascript() {
if ( !is_page('my-page') ) {
// ПОДКЛЮЧЕНИЕ/РЕГИСТРАЦИЯ СКРИПТОВ
}
}
Это намного чище и эффективнее. Я не вижу смысла сначала регистрировать скрипт, а затем снова его отключать. Лучше сразу регистрировать скрипты с условиями

Наконец-то получилось убрать загрузку jQuery ТОЛЬКО на главной странице, решил поделиться, возможно это сэкономит другим разработчикам 8 часов проб и ошибок.
// удаляем jQuery ТОЛЬКО с главной страницы
add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );
function my_deregister_javascript() {
if ( is_home('front-page') ) {
wp_deregister_script( 'jquery' );
}
}
ПРИМЕЧАНИЕ: is_page из первоначального вопроса не работает, когда вы хотите использовать front-page или home в аргументе - необходимо использовать is_home (это стоило мне часа времени)

Вероятно, лучше подключить эти скрипты только на определённых страницах, а не подключать и затем отключать их:
function wpse158453_enqueue_scripts() {
if(!is_page('my-page')) {
wp_enqueue_script( 'jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js' );
wp_enqueue_script( 'jquery-ui', '//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js' );
wp_enqueue_script( 'jquery-custom', get_template_directory_uri() . '/admin/js/custom.js' );
}
}
add_action( 'wp_enqueue_scripts', 'wpse158453_enqueue_scripts' );
Или можно попробовать использовать wp_dequeue_script вместо wp_deregister_script
Надеюсь, это поможет.

// Удаляем jQuery только на главной странице
add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );
function my_deregister_javascript() {
if ( is_front_page() ) {
wp_deregister_script( 'jquery' );
}
}
Добавьте этот скрипт в файл function.php вашей темы, чтобы решить проблему с jQuery
