Я работаю над пользовательской темой WordPress. У меня пока все работает отлично, за исключением одного: внешние файлы JavaScript не будут работать.
Я следовал точным советам по ссылкам здесь и здесь, но все равно не работает.
Я искал кодекс, проверял исходный код, использовал firebug. Я понятия не имею, почему это не работает. К сожалению, из-за соглашения о неразглашении мне не разрешено предоставлять вам какой-либо фактический код с сайта или ссылку на него. Так что мне придется объяснить, как я могу.
Я использовал wp_enqueue_script()
для включения файлов в functions.php
файл. Теги скрипта в голове следующие:
<script type='text/javascript' src='http://www.xx.com/wp-includes/js/jquery/jquery.js?ver=1.4.4'></script>
<script type='text/javascript' src='http://www.xx.com/wp-content/themes/twentyten/scripts/custom.js?ver=3.1'></script>
Итак, файлы загружаются, но они просто не работают. Мне было интересно, может ли ?ver=3.1
в конце моего custom.js
файла иметь какое-либо отношение к этому?
Код из моего functions.php
файла:
function twentyten_custom_scripts() {
if ( !is_admin() ) // instruction to only load if it is not the admin area
{
// register your script location, dependencies and version
wp_register_script('custom_script', get_bloginfo('template_directory') . '/scripts/custom.js', array('jquery') );
// enqueue the script
wp_enqueue_script( 'jquery' );
wp_enqueue_script('custom_script');
}
}
add_action('template_redirect', 'twentyten_custom_scripts');
Я действительно потерян в этот момент. Я даже изменил все свои:
$('#elem').hide();
к
jQuery('#elem').hide();
В custom.js
файле судя по кодексу wp_enqueue_script()
не конфликтует раздел обёрток здесь, по прежнему ничего.
О, и мне нужно, чтобы этот файл загружался на все мои страницы, но не в мой блог, так как у меня есть несколько статических страниц, настроенных для основного сайта. Я надеюсь, что в этом есть смысл.
Просто для уточнения: js-файлы доступны из вашего браузера, если вы просто вставите URL-адрес в адресную строку и нажмете Enter?
@ Роман, да, они есть.
Хорошо, я устал от всех ваших предложений, так что что-то там помогло. Кажется, теперь это работает. Спасибо Роман.
С моей точки зрения, это должно работать. Может быть, вы можете разместить свой файл custom.js здесь. Возможно, в этом файле есть синтаксическая ошибка или что-то подобное. Вы также можете проверить, работает ли встроенный jquery из коробки, добавив простую команду jquery в ваш header.php.
Некоторые подсказки:
Хук действия
template_redirect
используется для включения файла только на главную страницу (насколько я помню). Если вы хотите загрузить скрипт после загрузки темы, вы можете использоватьafter_setup_theme
хук действия.Вам не нужно ставить файл jquery в очередь вручную, если вы установили jquery как зависимость вашего custom.js, как вы это сделали. Файл будет автоматически загружен из WordPress до того, как будет прикреплен ваш custom.js.
Вы добавили
jQuery.noConflict();
в начало вашего custom.js ?Некоторый рабочий пример:
functions.php
custom.js