it-swarm.xyz

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

Поэтому я использую 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() вверху, чтобы включенный файл WP jQuery использовался для всех моих плагинов, хотя в нем сказано, что этого не следует делать.

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

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

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

Спасибо!

15
Ben Everard

Исходя из формулировки вашего вопроса, вы должны добавить сценарии, написав теги <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');

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

9
Annika Backstrom

Я предлагаю взглянуть на 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');

Вы также можете проверить плагин Использовать библиотеки Google .

7
Travis Northcutt

Хотя @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');
1
cjbj