Добавление скрипта в нижний колонтитул помещает его в самый низ.

Вопрос или проблема

У меня возникла небольшая проблема, и я не уверен, в чем дело. Я пытаюсь подключить JavaScript в подвале моего сайта на WordPress. Подвал выглядит так:

    </footer>
</div>

<?php wp_footer(); ?>

<script>
    jQuery(document).foundation();
</script>
</body>
</html>

Подключаемый скрипт ДОЛЖЕН быть помещен в вызов wp_footer, размещая скрипт сразу перед его фактическим вызовом. Но, глядя на исходный код файла, я вижу это:

</footer>
</div>







<script>
jQuery(document).foundation();
</script>
<script type="text/javascript" src="http://www.thetestsite.com/wp-content/themes/cornerstone-4.3.1/js/foundation.min.js?ver=4.3.3"></script>
</body>
</html>

По какой-то причине, обсуждаемый скрипт помещается ПРЯМО ПЕРЕД закрывающим тегом body.

Я проверил, что wp_footer находится на правильном месте, поэтому не уверен, что может послужить причиной этого поведения. Если я подключаю скрипт в заголовке, он работает нормально, но мне просто интересно, почему такое поведение возникает.

ОБНОВЛЕНИЕ (НОВЫЙ КОД): Извините за путаницу. Вот часть functions.php с методом подключения скриптов:

function load_cornerstone_scripts() {
    wp_enqueue_script(
        'foundation_js',
        get_template_directory_uri() . '/js/foundation.min.js',
        array('jquery'),
        '4.3.1',
        true
    );

}

add_action('wp_enqueue_scripts', 'load_cornerstone_scripts',0);

Чтобы было ясно…оригинальные два блока кода показывают 1) Как выглядит php файл footer.php, и 2) как отображается исходный код.

Вам нужно что-то вроде этого.

// предполагая, что вы хотите загрузить это только на фронте
if ( ! is_admin() )
     add_action( 'wp_enqueue_scripts', 'wpse_112876_load_scripts' );

function wpse_112876_load_scripts() {
     wp_enqueue_script( 'my_foundation', get_template_directory_uri() . '/js/foundation.min.js', null, '4.3.3', true );

     wp_enqueue_script( 'my_foundation_init', get_template_directory_uri() . '/js/foundation_init.js', array( 'my_foundation' ), null, true );
}

Ответ или решение

Конечно, давайте подробно разберем вашу ситуацию и предложим решение.

Вы упомянули, что при использовании функции wp_enqueue_script() для добавления JavaScript в нижний колонтитул вашего сайта на WordPress, скрипт выводится перед закрывающим тегом </body>, а не внутри вызова функции wp_footer(). Давайте рассмотрим, почему это может происходить и какое решение можно применить.

Причины проблемы

  1. Параметр true: Вы правильно используете параметр true в функции wp_enqueue_script(), который указывает, что скрипт должен быть загружен в нижней части страницы. Это правильный подход, и он должен работать, если все сделано корректно.

  2. Перенос скриптов в wp_footer(): Ваша проблема может заключаться в том, что в вашей теме или плагинах могут быть дополнительные действия, которые изменяют порядок, в котором скрипты загружаются. Также возможно, что какой-то другой плагин или часть кода вашей темы вызывает скрипты вне wp_footer().

  3. Очередность действий: Параметр 0 в add_action('wp_enqueue_scripts', 'load_cornerstone_scripts', 0) должен использоваться с осторожностью. Если это не последняя функция, которая добавляет скрипты, другие функции могут добавляться позже и перезаписывать или изменять порядок загрузки.

Решение

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

  1. Убедитесь, что порядок загрузки скриптов корректен. Попробуйте установить приоритет на более высокий (например, 10), чтобы ваша функция была выполнена позже:
function load_cornerstone_scripts() {
    wp_enqueue_script(
        'foundation_js',
        get_template_directory_uri() . '/js/foundation.min.js',
        array('jquery'),
        '4.3.1',
        true // Размещение внизу страницы
    );
}

add_action('wp_enqueue_scripts', 'load_cornerstone_scripts', 10);
  1. Проверьте, не конфликтуют ли с вашими скриптами другие плагины или коды тем. Вы можете временно отключить другие плагины и переключиться на стандартную тему, чтобы увидеть, сохраняется ли проблема.

  2. Если вы используете собственный код и хотите добавить инициализацию скрипта после загрузки библиотеки Foundation, вы можете добавить еще один enqueue для вашего инициализирующего скрипта, как показано ниже:

function load_cornerstone_scripts() {
    wp_enqueue_script(
        'foundation_js',
        get_template_directory_uri() . '/js/foundation.min.js',
        array('jquery'),
        '4.3.1',
        true
    );

    wp_enqueue_script(
        'foundation_init_js',
        get_template_directory_uri() . '/js/foundation_init.js',
        array('foundation_js'),
        null,
        true
    );
}

add_action('wp_enqueue_scripts', 'load_cornerstone_scripts', 10);

Заключение

Определив правильный порядок загрузки и убедившись, что ваш код не конфликтует с другими частями сайта, вы сможете решить проблему с размещением скриптов в нижнем колонтитуле.

Если все еще будут возникать сложности, попробуйте проверить вывод с помощью консоли браузера или инструмента разработчика для выявления потенциальных ошибок в JavaScript или конфликтов, которые могут влиять на загрузку скриптов.

Оцените материал
Добавить комментарий

Капча загружается...