Не удается подключить скрипты в футере?
В WordPress Codex говорится:
(старая страница документации)
$in_footer
(boolean) (необязательно) Обычно скрипты размещаются в секции head. Если этот параметр установлен как true, скрипт размещается внизу страницы. Для этого требуется, чтобы тема имела хук wp_footer() в соответствующем месте. Обратите внимание, что вы должны поставить скрипт в очередь до выполнения wp_head, даже если он будет размещен в футере. (Появилось в WordPress 2.8) По умолчанию: false
Поэтому я добавил true
после каждого src path
скрипта:
/**
* JavaScript
*/
function my_scripts_method() {
wp_deregister_script( 'jquery' );
wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js', true );
wp_enqueue_script( 'jquery' );
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
function media_queries_script() {
wp_register_script( 'mediaqueries', get_template_directory_uri() . '/js/css3-mediaqueries.js', true );
wp_enqueue_script( 'mediaqueries' );
}
add_action('wp_enqueue_scripts', 'media_queries_script');
function custom_script() {
wp_register_script( 'custom', get_template_directory_uri() . '/js/custom.js', true );
wp_enqueue_script( 'custom' );
}
add_action('wp_enqueue_scripts', 'custom_script');
function replace_script() {
wp_register_script( 'replace', get_template_directory_uri() . '/js/jquery.ba-replacetext.min.js', true );
wp_enqueue_script( 'replace' );
}
add_action('wp_enqueue_scripts', 'replace_script');
Но скрипты все равно подключаются в шапке.
Есть какие-нибудь предложения по исправлению?

Куда вы поместили свой код?
- Аргумент "true" указывается в
wp_register_script();
, а не вwp_enqueue_script();
Функция выглядит так:
<?php wp_enqueue_script('handle', 'src', 'deps', 'ver', 'in_footer'); ?>
что означает
<?php wp_enqueue_script('NameMySccript', 'path/to/MyScript',
'dependencies_MyScript', 'VersionMyScript', 'InfooterTrueorFalse'); ?>
Например:
<?php
wp_enqueue_script('my_script', WP_CONTENT_URL . 'plugins/my_plugin/my_script.js', array('jquery', 'another_script'), '1.0.0', true);
?>
- Есть ли в вашей теме вызов
<?php wp_footer(); ?>
в конце страницы?
3. Добавьте действие с помощью add_action('wp_print_scripts', 'ваша_функция');
Учитывая вышесказанное, лучшей практикой будет:
<?php
if (function_exists('load_my_scripts')) {
function load_my_scripts() {
if (!is_admin()) {
wp_deregister_script( 'jquery' );
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js');
wp_enqueue_script('jquery');
wp_register_script('myscript', bloginfo('template_url').'/js/myScript.js'__FILE__), array('jquery'), '1.0', true );
wp_enqueue_script('myscript');
}
}
}
add_action('init', 'load_my_scripts');
?>
или add_action('wp_print_scripts', 'dl_register_js');

Спасибо, теперь всё работает, но я понял, что указание true
в любом из функций wp_enqueue
или wp-register_script
работает одинаково хорошо.

@krembo99 Функция wp_register_script()
принимает такое же количество аргументов, и обе добавляют скрипты в глобальный массив $wp_scripts
и подмассив data
. Учитывая неверную информацию в сочетании с ужасной читаемостью вашего ответа, я вынужден поставить вам -1 (будет удалено при переработке).

Я хочу упростить ответ здесь.. Когда вы используете wp_enqueue_script
или wp_register_script
для загрузки скрипта в подвале (футере), вам нужно убедиться, что вы включаете и другие параметры, даже если они пустые.
Я пытался..
wp_register_script( 'rrssb', get_stylesheet_directory_uri() . '/includes/rrssb.min.js', true);
Что не сработало, как заметил @janoChen. WordPress ожидает следующую сигнатуру:
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
Поэтому вам нужно указать '',
для параметров, которые вы не используете, если хотите объявить функцию в одну строку. Таким образом, следующий код работает как задумано:
wp_register_script( 'rrssb', get_stylesheet_directory_uri() . '/includes/rrssb.min.js', '', '', true);
Впоследствии вы можете объявить функцию в формате массива, как показывает @Brian Fegter.

Согласно официальной документации WordPress (Последняя проверка - май 2018):
https://developer.wordpress.org/reference/functions/wp_enqueue_script/
и личному опыту более 7 лет.
Вы всегда должны стараться использовать функцию 'wp_enqueue_scripts' для лучшей совместимости с установленными плагинами/темами.
add_action('wp_enqueue_scripts','your_plugin_enqueue');
Вы можете найти больше информации об использовании в официальной документации Использование здесь
/**** wp_register_script, wp_enqueue_script, wp_dequeue_script *** *** Личная рекомендация * - Я настоятельно рекомендую регистрировать все скрипты перед подключением, * опять же -> для лучшей совместимости с другими разработчиками. * :::: Например, чтобы другие могли управлять позицией * ваших скриптов, используя метод wp_dequeue_*type*. * (wp_dequeue_script, wp_dequeue_style,...) *** Официальная документация * $in_footer * - (bool) (Опционально) Подключать ли скрипт перед </body> вместо <head>. По умолчанию 'false'. * - Значение по умолчанию: false * ***/ // примеры: function your_plugin_enqueue(){ wp_dequeue_script('some_script(s)'); // удалить конфликтующий скрипт wp_register_script( $handle, $src, $deps, $ver, $in_footer=true ); wp_enqueue_script($handle); wp_register_script('some_script(s)', $src, $deps, $ver, $in_footer=true); // повторно подключить скрипты после вашего, например, для устранения конфликтов wp_enqueue_script('some_script(s)'); } add_action('wp_enqueue_scripts','your_plugin_enqueue');
P.S. Если вы считаете этот ответ полезным, пожалуйста, поставьте '▲' (Стрелка вверх), если вы думаете, что его можно улучшить, пожалуйста, оставьте комментарий ниже.
