Как добавить javascript перед закрывающим тегом body в футере WordPress
Я следую советам других пользователей о добавлении js файла перед закрывающим тегом body, но у меня это не работает.
Не могли бы вы проверить мой код?
<?php
/*загрузить js файл в футер*/
function myscript()
{
if( wp_script_is( 'jquery', 'done' ) ) {
?>
<script type="text/javascript" src="js/scripts.js"></script>
<?php
}
}
add_action( 'wp_footer', 'myscript' );
?>
Большое спасибо
РЕДАКТИРОВАТЬ:------------------------------------------------
Это короткое решение..
<script language="javascript" src="<?php bloginfo('template_directory'); ?>/js/scripts.js"></script>
но это не правильный ответ, верно?
РЕДАКТИРОВАТЬ---------------------------------------------------
Вот что я пытаюсь сделать, основываясь на примерах из WP codex и ваших замечаниях Fischi, но думаю, что всё еще делаю что-то неправильно..
function my_scripts_method() {
wp_enqueue_script(
'myscript',
get_bloginfo('template_directory') . '/js/scripts.js',
array( 'jquery' ),
'',
true
);
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
Файл всё еще не загружается в футер.

Вы всегда должны добавлять javascript (и стили) с помощью WordPress функции wp_enqueue_script()
Работает это так:
wp_enqueue_script(
$handle // имя вашего подключаемого файла, в вашем случае 'myscript'
,$src // источник вашего файла, может быть внешним, или для вашего примера: get_bloginfo('template_directory') . '/js/scripts.js'
,$deps // зависит ли ваш javascript от другого javascript файла? например, jquery? передайте массив аргументов, указывающих все зависимости: array( 'jquery' )
,$ver // номер версии вашего javascript
,$in_footer // вот что вам нужно: true
);
После установки $in_footer
в true, файл подключается в действии wp_footer()
, обычно прямо перед закрывающим тегом </body>
.
Итак, для вас:
wp_enqueue_script( 'myscript', get_bloginfo('template_directory') . '/js/scripts.js', array( 'jquery' ), '', true );
решает задачу.
Примечание: Не все темы (хотя все темы должны) вызывают wp_footer();
в своем футере / непосредственно перед закрывающим тегом </body>
.

Большое спасибо, Fischi. Смотрите мою правку выше... Комментарии StackExchange отстойно отображают чистую разметку.

Привет, Fischi. Моя тема использует <?php get_footer(); ?>. Я пробовал wp_footer(); но это не сработало - футер вообще не отображался.

@SixfootJames без проблем. Обратите внимание, что разница между get_footer()
и wp_footer()
в том, что get_footer()
подключает файл шаблона footer.php
, тогда как wp_footer()
- это действие WordPress для вставки всего JavaScript и стилей, которые должны отображаться в футере. Обычно wp_footer()
располагается в footer.php
, прямо перед закрывающим тегом </body>
.
