Задать вопрос
Kianl
@Kianl
Печальный веб-разработчик

Что с Wordpress? Почему штатный jquery перестал работать?

Привет ребята. На разрабов WP уже зла не хватает. Выпустили обновление - у меня админка работать перестала как надо.

// Подключаю скрипты и стили админки
add_action('admin_enqueue_scripts', 'ugd_admin_scripts');
function ugd_admin_scripts(){
        wp_enqueue_script	('jquery');
        wp_enqueue_script	('editor-buttons', 			get_template_directory_uri() . '/js/newbuttons.js', array('jquery'));
}


Ничего не работает: 0: Object expected в любом скрипте, куда бы я его не втыкал. Если подключить внешнюю jquery с CDN - все работает. Зато не работают jquery-ui диалоги.

Что не так? Почему та же кнопка на jquery "добавить медиафайл" работает, а мои - нет?
Заранее спасибо.
  • Вопрос задан
  • 232 просмотра
Подписаться 1 Простой 8 комментариев
Решения вопроса 1
Kianl
@Kianl Автор вопроса
Печальный веб-разработчик
Короче, все исправил. Как обычно, сам... Выкладываю решение. Может кому пригодится.
// Подключаем скрипты и стили админки
add_action('admin_enqueue_scripts', 'ugd_admin_scripts');
function ugd_admin_scripts(){
        // Тут у нас JQuery
        wp_enqueue_script	('ugd-jquery', 'https://code.jquery.com/jquery-3.4.1.min.js');
        // Тут у нас JQuery UI
        wp_enqueue_script	('ugd-jquery-ui', 'https://code.jquery.com/ui/1.12.1/jquery-ui.min.js');
        // Тут у нас тема (css-стили) для JQuery UI
        // Если не подключить, будут глюки типа двух крестиков на кнопке закрытия окна и т.п.
        wp_enqueue_style 	('ugd-jquery-ui-theme', 'https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css');
        // А тут у нас сам скрипт диалогового окна
        // Обязательно устанавливаем зависимость array('jquery-ui-dialog')
        wp_enqueue_script	('admin_scripts', get_template_directory_uri() . '/js/admin_scripts.js', array('jquery-ui-dialog'));
}


Всем спасибо. По крайней мере за попытки)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
cesnokov
@cesnokov
<head>&nbsp;</head>
Мой вариант:
function load_scripts() {
    if (!is_admin()) {
        wp_deregister_script('jquery');
        wp_enqueue_script('jquery', '//code.jquery.com/jquery-3.4.1.min.js', array(), 'cdn', false);
        add_filter('script_loader_src', 'jquery_local_fallback', 10, 2);
    }
}
add_action('wp_enqueue_scripts', 'load_scripts', 100);

function jquery_local_fallback($src, $handle = null) {
    static $add_jquery_fallback = false;
    if ($add_jquery_fallback) {
        echo '<script>window.jQuery || document.write(\'<script src="';
        echo get_template_directory_uri() . '/assets/js/jquery-3.4.1.min.js';
        echo '"><\/script>\')</script>' . "\n";
        $add_jquery_fallback = false;
    }
    if ($handle === 'jquery') {
        $add_jquery_fallback = true;
    }
    return $src;
}
add_action('wp_head', 'jquery_local_fallback');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы