Включая jQuery в Wordpress


Я использую приведенный ниже код для включения jQuery в мою установку Wordpress. Ранее я вызывал файл jQuery, используя стандартный HTML-скрипт, но это вызывало проблемы с плагином Wordpress в IE9. Когда я использую функцию wp_enqueue_script, она решает проблему, но затем нарушает мой пользовательский файл Javascript, который я включаю после wp_head(). Что я делаю не так?

<?php wp_enqueue_script("/wp-content/themes/mytheme/js/jquery-1.5.1.min.js"); ?>
<?php wp_head(); ?>
<script type="text/javascript" src="/wp-content/themes/mytheme/js/custom.js"></script>
 1
Author: thisisready, 2011-04-07

2 answers

1) Включать скрипты только через wp_head(). Для вашего пользовательского скрипта зарегистрируйтесь и поставьте его в очередь как таковой:

function mytheme_custom_scripts() {

    if ( ! is_admin() ) {
        $scriptsrc = get_stylesheet_directory_uri() . '/js/';
        wp_register_script( 'mytheme_custom', $scriptsrc . 'custom.js' );   
        wp_enqueue_script( 'mytheme_custom' );
    }

}
add_action( 'after_setup_theme', 'mytheme_custom_scripts' );

2) Вам необходимо отменить регистрацию основного jQuery, а затем зарегистрировать и поставить в очередь свою уменьшенную версию, например:

function mytheme_minified_jquery() {

    if ( ! is_admin() ) {
        wp_deregister_script( 'jquery' );
        wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js' );  
        wp_enqueue_script( 'jquery' );
    }

}
add_action( 'init', 'mytheme_minified_jquery', 1000 );

Обратите внимание, что оба включают условие if ( ! is_admin() ). Вы не хотите возиться со сценариями, загружаемыми в пользовательский интерфейс администратора.

Кроме того, в моем примере используется Google для уменьшенной версии jQuery. Если вы хотите использовать свою собственную комплектную версию, добавьте SRC в wp_register_script() вместо.

 2
Author: Chip Bennett, 2011-04-07 20:59:33

Здесь несколько проблем:

  • включая внешнюю версию jQuery без отмены регистрации версии в комплекте с WP;
  • неправильное wp_enqueue_script() использование (неправильные аргументы);
  • повторяющий сценарий yourslef;
  • для всего этого используется файл шаблона.

Основным примером того, как сделать это более правильно, было бы что-то вроде этого в functions.php темы:

add_action( 'wp_enqueue_scripts', 'custom_script' );

function custom_script() {

    wp_enqueue_script('custom','/wp-content/themes/mytheme/js/custom.js',array('jquery'));
}
 1
Author: Rarst, 2011-04-07 20:53:59