#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? Я не понимаю, почему он не регистрируется?