Отключение скриптов на определенной странице

19 авг. 2014 г., 21:52:39
Просмотры: 16.5K
Голосов: 4

Мне нужно исключить определенные скрипты на конкретной странице. Я пробовал этот код, но он не работает - при проверке страницы скрипты все еще загружаются в футер.

Вот мой код в 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' );

     }
}

Что я упускаю? Спасибо!

1
Комментарии

Можешь попробовать приоритет от 100 до стандартного, который равен 10. Просто попробуй add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );

Maruti Mohanty Maruti Mohanty
19 авг. 2014 г. 22:50:51
Все ответы на вопрос 4
0

У вас есть базовая ошибка в коде. Следующий код

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') ) {

       // ПОДКЛЮЧЕНИЕ/РЕГИСТРАЦИЯ СКРИПТОВ

     }
}

Это намного чище и эффективнее. Я не вижу смысла сначала регистрировать скрипт, а затем снова его отключать. Лучше сразу регистрировать скрипты с условиями

20 авг. 2014 г. 07:33:51
0

Наконец-то получилось убрать загрузку 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 (это стоило мне часа времени)

29 янв. 2017 г. 20:50:49
1

Вероятно, лучше подключить эти скрипты только на определённых страницах, а не подключать и затем отключать их:

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

Надеюсь, это поможет.

19 авг. 2014 г. 23:09:37
Комментарии

Я добавил оператор ! в код, чтобы соответствовать OP. Я проголосовал за ответ. Если кто-то против, не стесняйтесь просто откатить мои изменения :-)

Pieter Goosen Pieter Goosen
20 авг. 2014 г. 08:08:07
1
// Удаляем jQuery только на главной странице

add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );

function my_deregister_javascript() {
  if ( is_front_page() ) {
    wp_deregister_script( 'jquery' );
 }
}

Добавьте этот скрипт в файл function.php вашей темы, чтобы решить проблему с jQuery

21 июн. 2017 г. 08:56:50
Комментарии

Ответы, содержащие только код, не являются хорошими. Пожалуйста, добавьте объяснение того, что делает код, чтобы любой пользователь мог его понять.

cybmeta cybmeta
21 июн. 2017 г. 09:47:48