WordPress wp_enqueue_script () НИКОГДА не работает - PullRequest
2 голосов
/ 09 ноября 2011

Я прочитал все посты и документацию по сценарию wp_enqueue ... но я НИКОГДА не смог заставить его работать.

Это то, что я делаю, это работает:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"</script>
<script type="text/javascript">
MY CODE
</script>

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

wp_enqueue_script('jquery');
wp_head();

Не повезло.

add_action('init', 'addscripts');
function addscripts() {
    wp_enqueue_script('jquery');
 }
wp_head();

Не повезло.

//in the theme's functions.php file
add_action('init', 'addscripts');
//add_action('wp_enqueue_scripts', 'addscripts'); //this also doens't work
function addscripts() {
    wp_enqueue_script('jquery');
 }

Я также попробовал те же подходы со ссылкой на внешнюю библиотеку jquery на google вместо тега jquery. Я также попытался отменить регистрацию, а затем зарегистрировать скрипт jquery. Никогда не работает.

Так что я думаю, что это ключевые вопросы:

  1. Что-то не так с моим вызовом функции wp_enqueue_script()?

  2. Куда это должно идти? functions.php? header.php

  3. Есть ли определенный крючок, который мне нужно использовать, который не упомянут? 'init'? 'template_redirect'? 'wp_enqueue_scripts?'

Пожалуйста, не копируйте / вставляйте фрагменты из кодекса ! Я прочитал это 50 раз и перепробовал их все. Я обещаю.

Я экспериментирую с чистой установкой WP3 и добавляю приведенный выше код в стандартную тему twentyeleven.

Ответы [ 3 ]

3 голосов
/ 09 ноября 2011

Мы должны предположить, что wp_enqueue работает, потому что я не вижу вил и факелов на горизонте.

Такая вещь расстроит многих разработчиков.

Итак, давайте предположим, что этоникогда не вызываться.

Попробуйте добавить что-то подобное в вызываемую функцию, чтобы отменить регистрацию / зарегистрировать новую версию jQuery (не знаю, зачем вам это делать).

<?php error_log( 'Something called me!' , 0 ); ?>

Затем, после того как вы запустите свой сайт и ожидаете, что ваша функция будет вызываться, проверьте журнал ошибок серверов (/var/log/apache/yoursite-error.log или что-то в этом роде) и посмотрите, появляется ли эта строка.

Если он появляется, мы можем перейти к следующему набору устранения неполадок.

1 голос
/ 09 ноября 2011

http://codex.wordpress.org/Function_Reference/wp_enqueue_script

Предположим, вы хотите использовать CDN-копию jQuery вместо WordPress, добавьте этот код в ваш файл functions.php.

<?php
function my_scripts_method() {
    wp_deregister_script( 'jquery' );
    wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js');
    wp_enqueue_script( 'jquery' );
}    

add_action('wp_enqueue_scripts', 'my_scripts_method');
?>
0 голосов
/ 24 мая 2013

Я хотел добавить комментарий, но предположил, что вступительный вопрос слишком стар, чтобы сделать это.

Надеюсь, я процитировал здесь всех нужных людей и подтвердил их мнение.


У меня некоторое время возникала та же проблема, что и у @Emerson, пока я не сделал следующее и как работает jQuery /loading.

Сначала я изменил свой код JS с $ (на jQuery (как предложил @Johannes Pille впервая группа комментариев. Информацию о noConflict (), о которой упоминает @Johannes Pille, можно найти по адресу: http://codex.wordpress.org/Function_Reference/wp_enqueue_script#jQuery_noConflict_Wrappers

Эта ссылка на кодек только для вас @Emerson ..: P

Итак, мой код выглядит следующим образом - надеюсь, это кому-нибудь поможет.

Код JS

/**
 * navigation.js
 *
 * Handles toggling the navigation menu for small screens.
 */

jQuery(document).ready(function(){
jQuery(".nav-toggle").click(function(){
    jQuery("#menu-header-menu").slideToggle("fast");
});
});

В моем файле functions.php

function toggle_menu(){
if(!is_admin()){
    //register the script location
    wp_register_script('navigation', 
        get_stylesheet_directory_uri() . '/js/navigation.js', 
        array('jquery'), '2.0.110526' );
    // enqueue the script
    wp_enqueue_script('navigation');
};
}
add_action('init', 'toggle_menu'); 

я обнаружил, что это говоритWordPress версия jQuery для использования, '2.0.110526' была очень важной. Без этого она не работала.

Мне не нужно было добавлять какие-либо примеры OPдобавление jQuery в header.php или functions.php. Как утверждают многие другие Wordpress поставляется с jQuery.Я обнаружил, что вам просто нужно сообщить Wordpress, когда и какую версию использовать при регистрации ваших скриптов в functions.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...