Включая 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>
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()
вместо.
Здесь несколько проблем:
- включая внешнюю версию 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'));
}