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


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

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

     }
}

Чего мне не хватает? спасибо!

Author: roybatty, 2014-08-19

4 answers

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

if ( !is_page('my-page') ) {

Означает, что если вы не на этой странице, отмените регистрацию скриптов. Взгляните на операторы php

! ->  Not !$x True if $x is not true

Кроме того, почему бы не исключить эту конкретную страницу, когда вы изначально ставите в очередь эти сценарии, что-то вроде

add_action( 'wp_enqueue_scripts', 'my_register_javascript', 100 );

function my_register_javascript() {
   if ( !is_page('my-page') ) {

       // ENQUEUE/REGISTER SCRIPTS

     }
}

Это намного чище и эффективнее. Я не вижу смысла регистрировать сценарий и снова отменять его регистрацию. Скорее зарегистрируйте сценарии условно с самого начала

 9
Author: Pieter Goosen, 2014-08-20 08:50:11

Наконец-то получил ТОЛЬКО свою первую страницу, чтобы не загружать jquery, подумал, что поделюсь ею, чтобы, возможно, сэкономить еще 8 часов взлома.

// remove jquery from ONLY the front page

add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );
function my_deregister_javascript() {
   if ( is_home('front-page') ) {
        wp_deregister_script( 'jquery' );
   }
}

ПРИМЕЧАНИЕ: is_page из первоначального вопроса не работает, если вы хотите использовать главную страницу или главную страницу в аргументе необходимо использовать is_home (это стоило мне часа)

 4
Author: Mark, 2017-01-29 18:50:49

Я бы, вероятно, попробовал ставить эти сценарии в очередь только на определенных страницах, а не ставить в очередь, а затем удалять их из очереди:

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

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

 2
Author: Steve Dimock, 2014-08-20 05:05:13
//Remove jquery only on front page

add_action( 'wp_enqueue_scripts', 'my_deregister_javascript' );

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

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

 0
Author: Viral M, 2017-06-21 07:18:28