Я делаю это с помощью следующего кода:
function uw_load_scripts() {
// Отмена регистрации встроенного jQuery
wp_deregister_script('jquery');
// Регистрация CDN version
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', array(), null, false);
// Загрузка новой версии jQuery
wp_enqueue_script( 'jquery' );
}
add_action( 'wp_enqueue_scripts', 'uw_load_scripts' );
Это работает, но я должен сделать это для всех, или для всех, кроме администратора (чтобы бэкэнд использовал версию WordPress?):
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.7.1/jquery.min.js', array(), null, false);
wp_enqueue_script('jquery');
}
}
}
add_action('init', 'load_my_scripts');
Эта версия вообще не работает, я получаю jQuery-версию WordPress, а не Google.
Следовательно, я должен отменить регистрацию jQuery, который включен в WordPress по умолчанию?
Кроме того, как мне добавить мои собственные скрипты правильно? Я думаю, что я должен сделать это также через functions.php, а не в заголовке, как я делаю сейчас, но я не уверен.
Если по соображениям производительности вы хотите загрузить jquery и другие базовые js-файлы из CDN, убедитесь, что вы загружаете одну и ту же версию, чтобы предотвратить неприятные вещи с функциями ядра и плагинов. Вот так:
Отмена регистрации упакованной в WP версии jQuery в пользу вашей может вызвать проблемы, особенно если вы не будете особенно осторожны, чтобы убедиться, что вы меняете версию, на которую указывает, всякий раз, когда WP обновляет свою версию. Это вдвойне касается плагинов, которые должны быть максимально совместимы с WP-версией jQuery.
Тем не менее, ваша первая версия верна — она подключена к
wp_enqueue_scripts
. Ваша вторая функция подключена кinit
, возможно, поэтому она не работает должным образом.Добавьте свои собственные сценарии аналогичным образом: p>
Это не будет работать. Я подозреваю, что вы имеете в виду
Ваш пример загрузит функцию load_my_scripts только в том случае, если она уже существует (чего не происходит, а если нет, то при этом возникает ошибка)
Надеюсь, это поможет, посмотрите в Кодексе для
wp_enqueue_scripts
больше информации.init
для постановки в очередь . Используйтеwp_enqueue_scripts
для внешнего интерфейса иadmin_enqueue_scripts
для стороны администратора. Вы можете использоватьinit
для регистрации скриптов.wp_enqueue_scripts
срабатывает только на фронт-энде (а не на странице входа), поэтому вам не нужно проверятьis_admin()
.Если у вас нет особых причин поступать иначе, я бы предложил зарегистрировать и поставить в очередь сценарии, используя
functions.php
для тем или в плагине:Если цель состоит в том, чтобы поставить скрипт в очередь при использовании шорткода, вы можете использовать
wp_enqueue_script
в обратном вызове шорткода, чтобы ставить его в очередь только при необходимости.Вы не должны перерегистрировать существующий jQuery на стороне администратора. Вы можете что-то сломать: D.
Подключаемые модули не должны перерегистрировать существующий jQuery.
Вы должны взвесить все за и против перерегистрации jQuery. Например, некоторые плагины могут сломаться, если вы зарегистрируете старую версию (возможно, не сейчас, но в будущем …)
Первое практическое правило: не отменяйте регистрацию встроенных в ядро сценариев и не заменяйте их на другие версии , если только вы не уверены, что ни тема, ни плагины, ни само ядро не сломаются из-за изменения версии. На самом деле, если вам абсолютно не нужна альтернативная версия сценария с ядром, просто используйте то, что связано с ядром.
Во-вторых, я настоятельно рекомендую подключаться к
wp_enqueue_scripts
для регистрации и постановки в очередь сценариев, а не кinit
. (Он работает вinit
, но с точки зрения play-nicely-with-others лучше использовать наиболее семантически правильный хук.) р>В-третьих, для постановки собственных сценариев в очередь вы используете те же методы, что и выше:
Просто добавьте все сценарии, которые вам нужны.