Запрос двух разных типов скрипта jQuery в WordPress из CDN

#javascript #php #jquery #wordpress #cdn

#javascript #php #jquery #wordpress #cdn

Вопрос:

Я пытаюсь поставить в очередь две разные версии jQuery в моем functions.php страница WordPress, первая из которых является оригинальной (я следовал руководству по созданию темы с нуля).

Второй должен включить ползунок диапазона для работы с ajax (он работает в jsfiddle здесь:https://jsfiddle.net/wcepbL45/1 / , но не запускается при внедрении на мой сайт WordPress.)

Вот что у меня есть в моем functions.php

 function include_jquery()
{
wp_deregister_script('jquery');

wp_enqueue_script('jquery', get_template_directory_uri() . '/js/jquery-3.1.3.min.js', '', 1, true);

    // !

wp_enqueue_script( 'jquery', 
'//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js', array( 'jquery' ));

    // !

add_action('wp_enqueue_scripts', 'jquery');
}

add_action('wp_enqueue_scripts', 'include_jquery');
  

Где я ошибаюсь? Имеет ли смысл загружать две разные библиотеки jQuery, или версия 3 включает версию 2? Почему в моем WordPress не запускается ползунок диапазона?

Спасибо!

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

1. вы не можете использовать две разные версии jQuery……………….

Ответ №1:

jQuery — это библиотека javascript, согласно описанию «jQuery — это быстрая, небольшая и многофункциональная библиотека JavaScript. Это значительно упрощает такие вещи, как обход HTML-документа и манипулирование им, обработка событий, анимация и Ajax, благодаря простому в использовании API, который работает во множестве браузеров «…. Короче говоря, они создали кучу функций с конкретными именами и поместили их в файл, чтобы упростить задачу.

Вы загружаете 2 версии (1 — последняя, другой — от 5 до 7 лет) одного и того же файла. Вы создаете конфликты, как никогда раньше и вы открываете себя для потенциальных вредоносных действий и уязвимостей в системе безопасности, используя такую старую версию.

РЕДАКТИРОВАТЬ 1:

Возвращаясь к вашей проблеме и следуя вашему последнему комментарию, вы неправильно ставите скрипты в очередь:

 function include_jquery()
{
wp_deregister_script('jquery');

wp_enqueue_script('jquery', get_template_directory_uri() . '/js/jquery-3.1.3.min.js', '', 1, true);

wp_enqueue_script( 'jquery', 
'//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js', array( 'jquery' ));

add_action('wp_enqueue_scripts', 'jquery'); 
}

add_action('wp_enqueue_scripts', 'include_jquery');
  

Оба ваших скрипта имеют одинаковый дескриптор, у вас есть 2 add action с 1 внутри функции, и у одного есть зависимость от самого себя, так что вы в значительной степени находитесь в бесконечном цикле.

 /**
* Theme scripts
*/
add_action( 'wp_enqueue_scripts', 'theme_scripts' );
function theme_scripts() {
  if ( ! is_admin() ) {

    /**
    * Register then enqueue jquery js
    *
    * Check if CDN's url is valid, if not return fallback
    */
    $test_jquery_js = @fopen( 'https://code.jquery.com/jquery-3.5.1.min.js', 'r' );
    if ( $test_jquery_js !== false ) {
      wp_register_script( 'jquery_js', '//code.jquery.com/jquery-3.5.1.min.js' );
    } else {
      wp_register_script( 'jquery_js', get_template_directory_uri() . '/assets/js/jquery-3.5.1.min.js', array() );
    };
    wp_enqueue_script( 'jquery_js' );

  };
};
  

Это правильный способ постановки скриптов в очередь. вы можете узнать больше о wp_enqueue_script @ https://developer.wordpress.org/reference/functions/wp_enqueue_script

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

1. Хорошо, конечно. Можете ли вы назвать какую-либо причину, по которой ползунок диапазона (в jsfiddle) не запускается при внедрении на мой сайт WordPress? Я поместил слайдер как в нижний колонтитул, так и на главную страницу, а код в scripts.js . Ни один из них не запускает команду slideStop, которая работает в jsfiddle

2. привет, спасибо! Я просто изменил код. Но мой ползунок диапазона по-прежнему не функционирует, на slideStop ничего не происходит (как и должно быть в jsfiddle? Я не понимаю, почему он не регистрируется?