отмените регистрацию скриптов на определенной странице
Мне нужно исключить выполнение определенных сценариев на определенной странице. я пробовал этот код, но он не работает - когда я просматриваю страницу, сценарии все еще загружаются в нижний колонтитул моей страницы.
Вот мой код в 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' );
}
}
Чего мне не хватает? спасибо!
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
}
}
Это намного чище и эффективнее. Я не вижу смысла регистрировать сценарий и снова отменять его регистрацию. Скорее зарегистрируйте сценарии условно с самого начала
Наконец-то получил ТОЛЬКО свою первую страницу, чтобы не загружать 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 (это стоило мне часа)
Я бы, вероятно, попробовал ставить эти сценарии в очередь только на определенных страницах, а не ставить в очередь, а затем удалять их из очереди:
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
Надеюсь, это поможет.
//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 файл, в котором вы разрешите запрос