До WP 5.0 работал приведенный ниже код. После WP 5.2 больше не работает. Я получаю сообщение об ошибке, предлагающее использовать wp_enqueue_scripts
и не использовать wp_deregister_script anymore
.
add_action('init', function()
{
if (is_admin())
{
return;
}
global $wp_scripts;
if (isset($wp_scripts->registered['jquery']->ver))
{
$ver = $wp_scripts->registered['jquery']->ver;
}
else
{
$ver = '1.12.4';
}
wp_deregister_script('jquery');
wp_register_script('jquery', "https://ajax.googleapis.com/ajax/libs/jquery/$ver/jquery.min.js", false, $ver);
});
Вместо этого я хочу загружать jQuery из CDN локально — это влияет на Google Pagespeed Insights. А также удалить файл jquery-migrate.min.js, потому что в большинстве случаев он не используется.
Если это так, попробуйте использовать крючок 'wp_enqueue_scripts'
вместо 'init'
.
Также взгляните на этот вопрос
Обычно достаточно вставить это в тег head
в файле header.php
:
<?php wp_enqueue_script('jquery'); ?>
А Wordpress сделает все остальное...
Мне удалось загрузить jQuery из Google CDN, однако WordPress добавляет -wp к версии выходного скрипта: https://ajax.googleapis.com/ajax/libs/jquery/1.12.4-wp/jquery.min.js - вместо https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js. Это функция, которую я использовал, которая работает:
// Load jQuery from Google CDN
add_action('wp_enqueue_scripts', function() {
if (is_admin()) {
return;
}
global $wp_scripts;
if (isset($wp_scripts->registered['jquery']->ver)) {
$ver = str_replace('-wp', '', $wp_scripts->registered['jquery']->ver);
} else {
$ver = '1.12.4';
}
wp_dequeue_script('jquery');
wp_deregister_script('jquery');
wp_register_script('jquery', "https://ajax.googleapis.com/ajax/libs/jquery/$ver/jquery.min.js", false, $ver);
});
и для загрузки определенной версии jQuery из CDN я использовал этот код, который работает
// Load jQuery from Google CDN
add_action('wp_enqueue_scripts', function() {
if (is_admin()) {
return;
} else {
$ver = '1.12.4';
}
wp_dequeue_script('jquery');
wp_deregister_script('jquery');
wp_register_script('jquery', "https://ajax.googleapis.com/ajax/libs/jquery/$ver/jquery.min.js", false, $ver);
});
Эти функции также отключают загрузку jquery-migrate.min.js.
Почему вы пытаетесь зарегистрировать ту же версию jQuery, что и WP. Если вы просто хотите иметь возможность использовать его, ответ @johannes подходит. Вам просто нужно поставить скрипт в очередь.