WordPress - проблема с jquery не определена - PullRequest
1 голос
/ 27 октября 2019

Перед тем, как я плачу за публикацию этого вопроса, когда много похожих вопросов уже было опубликовано, я хочу сказать, что я просмотрел много, много вопросов / ответов по Stackoverflow, связанных с этой проблемой, но ни один из них на самом деле не решил мою проблему.

Итак, я рискну и выложу еще один.

Я работаю в WordPress, используя тему, основанную на Bootstrap. Включает модальное окно Bootstrap. Я пытаюсь вызвать модальное окно «при загрузке страницы» (вместо того, чтобы пользователь нажимал на кнопку). Я также хочу установить cookie, чтобы модальное окно появлялось только один раз.

jQuery автоматически загружается темой WP, и я проверил (используя View Page Source) и подтвердил, что jQuery загружен в заголовкеpage.

В functions.php я поставил в очередь скрипты, которые загружают jQuery Cookie, а также вызывает модальное окно при загрузке страницы:

function modal_scripts() {
    wp_enqueue_script( 'jq-cookie-js', 'https://cdnjs.cloudflare.com/ajax/libs/jquery- 
        cookie/1.4.1/jquery.cookie.min.js', array(), false, true );
    wp_enqueue_script( 'modal-custom-js', get_stylesheet_directory_uri() . '/js/custom-modal.js', 
        array(), false, true );
}
add_action( 'wp_enqueue_scripts', 'modal_scripts' );

custom-modal.js содержит скрипткоторый запускает модальный режим и устанавливает cookie:

jQuery(function($) {

    $(window).load(function() {

        if(jquery.cookie('alreadyShown') === null) {

            setTimeout(function() {
                $('.the-modal').modal('show');
            }, 10000);

            jquery.cookie('alreadyShown', true, {expires: 7});

        }
    });
});

Я дважды проверил, и все файлы, кажется, загружаются нормально - jQuery в голове и jQuery Cookie и custom-modal.js'в нижнем колонтитуле.

Однако, я все еще получаю эту ошибку:

custom-modal.js?ver=5.2.4:3 Uncaught ReferenceError: jquery is not defined
    at custom-modal.js?ver=5.2.4:3
    at dispatch (jquery.js?ver=1.12.4-wp:3)
    at r.handle (jquery.js?ver=1.12.4-wp:3)

Надеясь, что кто-то может указать, что я делаю неправильно. Большое спасибо.

1 Ответ

0 голосов
/ 28 октября 2019

Наконец-то это удалось через много долгих часов (и несколько раз ударился головой о стену).

Во-первых, похоже, что плагин jQuery Cookie устарел и больше не поддерживается,Он был заменен JS-Cookie на GitHub - js-cookie

Поэтому я обновил свои сценарии постановки в очередь (functions.php) до JS-Cookie:

function modal_scripts() {
    wp_enqueue_script( 'js-cookie-js', get_stylesheet_directory_uri() . 
        '/js/js.cookie.js', array(), false, true );
    wp_enqueue_script( 'modal-custom-js', get_stylesheet_directory_uri() . 
        '/js/custom-modal.js', array(), false, true );
}
add_action( 'wp_enqueue_scripts', 'modal_scripts' );

Теперь мой custom-modal.js был отредактирован так:

(function($){
    $(document).ready(function() {

        var thecookie = Cookies.get('mymodal');

        if(!thecookie){

            setTimeout(function() {
                $('.the-modal').modal('show');
            }, 10000);

            Cookies.set('mymodal', 'true', { expires: 7 })

       }else{
            $('.the-modal').modal('hide');
        }
    });
})(jQuery);

Угадайте, что ?! Это работает.

Я не «оружейный» кодер, поэтому мой код (см. Выше), возможно, может быть улучшен, но сейчас он выполняет свою работу.

Счастливых дней!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...