Intereting Posts

Падение назад CDN в JavaScript

В HTML5 Boilerplate он захватывает JQuery Google CDN с помощью этого JS-кода

<!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if offline --> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.1.min.js"><\/script>')</script> 

Я попытался перенести его в WP с помощью этого PHP-кода

 function sbi_cdn_jquery() { global $wp_scripts; wp_deregister_script('jquery'); echo '<script src="//ajax.googleapis.com/ajax/libs/jquery/' . $wp_scripts->registered['jquery']->ver . '/jquery.min.js"></script>'; echo '<script>window.jQuery || document.write(\'<script src="' . get_bloginfo('wpurl') . '/wp-includes/js/jquery/jquery.js"<\/script>\')</script>'; } add_action( 'wp_enqueue_scripts', 'sbi_cdn_jquery' ); 

Но это не сработает!

Возможно ли это, чтобы упасть? Запишите Google CDN в JavaScript с WP?

Спасибо за помощь.

Solutions Collecting From Web of "Падение назад CDN в JavaScript"

Скрипты не печатаются на крюке wp_enqueue_scripts , а скорее на крюке wp_print_scripts . Тем не менее: не эхо / печатать сценарии, период . Вместо этого выложите их правильно.

Предостережение . Этот метод является территорией плагина и не должен быть включен в качестве кода темы в общедоступной теме.

Вы отменяете регистрацию jQuery, но вам не хватает того, что вы регистрируете свою собственную версию:

 <?php function sbi_cdn_jquery() { // Deregister core-bundled jQuery // This is dangerous! Understand the // potential consequences before doing this! wp_deregister_script( 'jquery' ); // Register custom jQuery version wp_register_script( 'jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js' ); // Enqueue cusotm jQuery wp_enqueue_script( 'jquery' ); } add_action( 'wp_enqueue_scripts', 'sbi_cdn_jquery' ); ?> 

Обратитесь к записи Codex для wp_register_script() и wp_enqueue_script() относительно аргументов для этих функций.

Я использую эту функцию для регистрации и размещения различных сценариев, которые использует моя тема:

 function cosmos_enqueue_scripts() { // Load jquery from Google CDN (protocol relative) with local fallback when not available if ( false === ( $url = get_transient('jquery_url') ) ) { // Check if Google CDN is working $url = ( is_ssl() ? 'https:' : 'http:' ) . '//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'; $resp = wp_remote_head($url); // Load local jquery if Google down if ( is_wp_error($resp) || 200 != $resp['response']['code'] ) { $url = get_template_directory_uri() . '/js/vendor/jquery-1.7.2.min.js'; } // Cache the result for 5 minutes to save bandwidth set_transient('jquery_url', $url, 60*5); } // Deregister WordPress' jquery and register theme's copy in the footer wp_deregister_script('jquery'); wp_register_script('jquery', $url, array(), null, true); // Load other theme scripts here wp_enqueue_script('modernizr', get_template_directory_uri() . '/js/vendor/modernizr-2.5.3.min.js', array( ), null, false); wp_enqueue_script('bootstrap', get_template_directory_uri() . '/js/vendor/bootstrap.min.js' , array('jquery'), null, true ); wp_enqueue_script('main' , get_template_directory_uri() . '/js/main.js' , array('jquery'), null, true ); } add_action('wp_enqueue_scripts', 'cosmos_enqueue_scripts'); 

Добавлено один и тот же ответ на jquery перестали работать после отмены регистрации версии WordPress , но добавив сюда для справки:

Если вы застряли на использовании версии jQuery, размещенной в Google, на память приходят два плагина:

  • Использовать библиотеки Google
  • WP jQuery Plus

Лучше просто использовать ядро, если вы не на 100% удобны с отладкой JavaScript (если что-то всплывает, как это было) и полностью не контролируют окружающую среду.