averagejoe
  • 0
Новичок

Как связать внешние файлы JavaScript?

  • 0

Я работаю над пользовательской темой 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() не конфликтует раздел обёрток здесь, по прежнему ничего.

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

Share
  1. Просто для уточнения: js-файлы доступны из вашего браузера, если вы просто вставите URL-адрес в адресную строку и нажмете Enter?

    • 0
  2. С моей точки зрения, это должно работать. Может быть, вы можете разместить свой файл custom.js здесь. Возможно, в этом файле есть синтаксическая ошибка или что-то подобное. Вы также можете проверить, работает ли встроенный jquery из коробки, добавив простую команду jquery в ваш header.php.

    Некоторые подсказки:

    1. Хук действия template_redirect используется для включения файла только на главную страницу (насколько я помню). Если вы хотите загрузить скрипт после загрузки темы, вы можете использовать after_setup_theme хук действия.

    2. Вам не нужно ставить файл jquery в очередь вручную, если вы установили jquery как зависимость вашего custom.js, как вы это сделали. Файл будет автоматически загружен из WordPress до того, как будет прикреплен ваш custom.js.

    3. Вы добавили jQuery.noConflict(); в начало вашего custom.js ?

    Некоторый рабочий пример:

    functions.php

    function twentyten_custom_scripts() {
        if ( !is_admin() ) // instruction to only load if it is not the admin area
        { 
            wp_register_script('custom_script', get_bloginfo('template_directory') . '/scripts/custom.js', array('jquery') );
            wp_enqueue_script('custom_script');
        }
    }
    add_action('after_setup_theme', 'twentyten_custom_scripts');
    

    custom.js

    jQuery.noConflict();
    
    jQuery(document).ready(function() {
        // do your stuff e.g.
        jQuery("a[rel^='prettyPhoto']").prettyPhoto();
    });
    
    • 0

Оставить ответ

You must login to add an answer.