Я разрабатываю тему и пытаюсь заставить работать wp_enqueue_script. Любопытно, что ничего не появляется. Это ничего не делает. Вот мои настройки:

В functions.php у меня есть:

function named_scripts() {

    global $named_options;

    if( is_admin() ) return;

    wp_deregister_script( 'jquery' );
    wp_register_script( 'screen', tz_JS . '/screen.js', array( 'jquery' ) );
    wp_enqueue_script( 'screen' );
    wp_enqueue_script( 'bootstrap', tz_JS . '/bootstrap/bootstrap.js', array( 'jquery' ) );

    wp_register_style( 'custom-style', get_template_directory_uri() . '/css/custom-style.css', array(), '20120208', 'all' );  
    wp_enqueue_style( 'custom-style' );

}



add_action( 'init', 'named_scripts' );

В header.php звоню

named_scripts();

А в HTML ничего не появляется вообще.

5
William H 30 Янв 2013 в 18:52

4 ответа

Лучший ответ

Вы должны были зарегистрировать свой файл jquery после удаления стандартного jquery для wordpress. Я использую этот код .. надеюсь, это поможет ..

function load_external_jQuery() { // load external file  
    wp_deregister_script( 'jquery' ); // deregisters the default WordPress jQuery  
    wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"), false);
    wp_enqueue_script('jquery');
    wp_register_script('blur', get_template_directory_uri() . '/_/js/blur.js', array('jquery') );
    wp_enqueue_script('blur');
}  
add_action('wp_enqueue_scripts', 'load_external_jQuery');
9
WillxD 30 Янв 2013 в 15:08

Джеральд на месте. Вы отменили регистрацию jQuery, поставляемую с Wordpress, без регистрации альтернативной версии.

Обычно поставляемая версия удаляется, если вы хотите загрузить ее непосредственно из CDN. Пример будет ниже;

  wp_deregister_script('jquery');
  wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', false, '1.7.2');
  wp_enqueue_script('jquery');

Если вы хотите отменить регистрацию, вам нужно сразу зарегистрировать другую версию, прежде чем ставить в очередь другие JS, зависящие от jQuery.

4
McNab 30 Янв 2013 в 15:01

Правильно ли определена константа "tz_JS"? Предполагая, что да, вы сможете упростить свою функцию следующим образом:

function named_scripts() {

    wp_enqueue_script( 'jquery' );
    wp_enqueue_script( 'screen', tz_JS . '/screen.js', array( 'jquery' ) );
    wp_enqueue_script( 'bootstrap', tz_JS . '/bootstrap/bootstrap.js', array( 'jquery' ) );

    wp_enqueue_style( 'custom-style', get_template_directory_uri() . '/css/custom-style.css', array(), '20120208', 'all' );  

}
add_action( 'wp_enqueue_scripts', 'named_scripts' );

wp_enqueue_scripts - это правильный хук, используемый для загрузки интерфейсных сценариев ( см. Кодекс ) . Вам не нужно проверять is_admin(), поскольку admin_enqueue_scripts - это соответствующий хук для загрузки скриптов на стороне администратора.

3
helgatheviking 30 Янв 2013 в 15:01

Если вы разрабатываете дочернюю тему , используйте get_stylesheet_directory_uri() при загрузке js в каталоге вашей темы.

function named_scripts() {
  wp_enqueue_script('jquery');
  wp_enqueue_script(
        'default_scripts', 
        get_stylesheet_directory_uri() . '/js/scripts.js', 
        array('jquery'),
        '1.0',
        false
        );
}
add_action( 'wp_enqueue_scripts', 'named_scripts' );
1
adedoy 19 Окт 2013 в 02:10