arlenbeiler
  • 0
Эксперт

Как связать внешние файлы jQuery/Javascript с WordPress

  • 0

Итак, я использую Starkers для создания своей следующей темы WP, и я столкнулся с небольшой проблемой, я включил свою собственную версию jQuery в header.php файл, но при проверке моего сайта с помощью Firebug я заметил, что jquery загружается дважды, я немного покопался и заметил, что я включил не только файл, но и wp_head() функцию.

Пытаясь решить проблему, я заметил комментарий в заголовочном файле, который произошел из темы Twenty Ten:

/* Always have wp_head() just before the closing </head>
 * tag of your theme, or you will break many plugins, which
 * generally use this hook to add elements to <head>, such 
 * as styles, scripts, and meta tags
 */

Итак, вот моя проблема, у меня сложилось впечатление, что файл jQuery должен быть установлен перед любым другим файлом, который хочет его использовать, и это wp_head() должно быть последним в <head> элементе, теперь я немного запутался, поскольку мне интересно, должен ли он Я поместил wp_head() вверху, чтобы файл jQuery, включенный в WP, использовался для всех моих плагинов, даже если в нем указано, что этого делать не следует.

Я закомментировал строку jQuery в wp_head() функции, но она требуется для страницы администратора, поэтому мне пришлось вернуть ее обратно.

Я также хотел бы использовать (по крайней мере, поэкспериментировать) с использованием версии jQuery Google CDN, но не хочу включать ее дважды!

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

Спасибо!

Share
  1. Это должно быть переименовано в что-то вроде «Как связать внешние файлы jQuery/Javascript с WordPress».

    • 0
  2. Судя по формулировке вашего вопроса, вы должны добавлять сценарии, записывая <script> теги в свой шаблон. Добавьте свои собственные скрипты wp_enqueue_script() в свой шаблон functions.php, соответствующим образом настроив зависимости от jQuery, и wp_head() скрипты добавятся за вас.

    function my_scripts() {
        wp_enqueue_script( 'my-sweet-script', get_bloginfo('template_directory') . '/script.js', array('jquery') );
    }
    add_action('template_redirect', 'my_scripts');
    

    См. страницу кодекса для получения дополнительной информации.

    • 0
  3. Я предлагаю взглянуть на 5 советов по использованию jQuery с WordPress. Среди прочего, он показывает код, необходимый для загрузки jQuery из библиотеки Google:

    function my_init() {
        if (!is_admin()) {
            // comment out the next two lines to load the local copy of jQuery
            wp_deregister_script('jquery');
            wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js', false, '1.3.2');
            wp_enqueue_script('jquery');
        }
    }
    add_action('init', 'my_init');
    

    Вы также можете проверить плагин Use Google Libraries.

    • 0
  4. Хотя @tnorthcutt прав в том, что вы должны правильно удалить из очереди собственный jquery WP, если хотите загрузить свой собственный, вы наверняка столкнетесь с проблемами при загрузке версии jquery, отличной от ядра WP. И ядро, и плагины полагаются на его наличие. Поэтому, если вы не обновляете свою тему новейшим jquery каждый раз при обновлении WP, ваш сайт может сломаться.

    Следующий код гарантирует, что ваша тема всегда загружает правильную версию jquery, сначала проверив, какую версию использует WP, а затем загрузив ее из Google:

    $wp_jquery_version = $GLOBALS['wp_scripts']->registered['jquery-core']->ver;
    $jquery_version = ( $wp_jquery_version == '' ) ? '1.8.3' : $wp_jquery_version; // fallback, just in case 
    wp_deregister_script('jquery');
    wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/'. $jquery_version .'/jquery.min.js', $jquery_version, false );
    wp_enqueue_script('jquery');
    
    • 0

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

You must login to add an answer.