Не удается подключить jQuery к скрипту редактирования записи

13 янв. 2013 г., 21:02:23
Просмотры: 460
Голосов: -1

В приведенном ниже коде, если я не укажу явную ссылку на библиотеку jQuery, мои jQuery-скрипты на странице не работают. Что не так с методом enqueue, который я пытаюсь использовать?

В functions.php:

if(is_admin())
{

/* ЗАГРУЗКА АДМИН СКРИПТОВ
**********************************/
require_once(TEMPLATEPATH . '/functions_private.php');

}

В functions_private.php:

if( 'post.php' == $pagenow )
{

    add_action('admin_print_scripts', 'my_load_ui_script');

    function my_load_ui_script()
    {
    wp_enqueue_script('jquery');
    ?>
        <!--<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>-->
        <script>
        if(typeof jQuery!="undefined"){
            alert("jQuery загружен");//НЕ СРАБОТАЕТ, ЕСЛИ Я НЕ УКАЖУ JQUERY ВРУЧНУЮ
        }           

        jQuery(document).ready(function()
        {
        //здесь будут jQuery-скрипты
        }

    }//КОНЕЦ ФУНКЦИИ 

}//КОНЕЦ УСЛОВИЯ
1
Комментарии

Поскольку вопрос касается слушателей событий в JS, он является не по теме. Голосую за закрытие.

kaiser kaiser
13 янв. 2013 г. 22:41:00
Все ответы на вопрос 4
4

Используйте хук admin_enqueue_scripts для добавления своего собственного скрипта. Поместите его во внешний файл и используйте wp_localize_script для передачи любых данных из PHP в JavaScript. jQuery уже используется в админ-панели, добавление тега script с загрузкой из Google может вызвать проблемы.

function wpa80418_admin_enqueue( $hook ) {
    if( 'post.php' != $hook )
        return;
    wp_enqueue_script(
        'my_custom_script',
        get_template_directory_uri() . '/js/myscript.js',
        array('jquery')
    );
}
add_action( 'admin_enqueue_scripts', 'wpa80418_admin_enqueue' );
13 янв. 2013 г. 21:40:20
Комментарии

Я не пытаюсь использовать свой собственный скрипт. Я пытаюсь использовать копию jQuery из WordPress. К сожалению, это не работает. Когда я заменяю admin_print_scripts на admin_enqueue_scripts, это тоже не работает.

Scott B Scott B
13 янв. 2013 г. 22:14:57

Попробуйте хук admin_footer

diggy diggy
13 янв. 2013 г. 22:15:57

+1, diggy! Это работает, но теперь мой скрипт, похоже, сломал админку WordPress. Ни одна из панелей не раскрывается/закрывается. Хотя мой скрипт работает нормально. В консоли появляется ошибка: Uncaught TypeError: Cannot call method 'toLowerCase' of undefined. Пожалуйста, опубликуйте ваш ответ, чтобы я мог принять его.

Scott B Scott B
13 янв. 2013 г. 22:24:58

поскольку вы добавляете свою собственную копию jQuery из внешнего источника, это снова нарушит работу административного интерфейса, как вы уже видели. WordPress уже включает jQuery, он должен быть загружен на большинстве страниц админки, так как весь JavaScript в административном интерфейсе использует его. не вставляйте теги script напрямую в страницу, подключайте внешние файлы для своих скриптов через систему очередей.

Milo Milo
13 янв. 2013 г. 22:54:59
2

WordPress jQuery по умолчанию не поддерживает символ $.

Сначала добавьте jQuery.

function my_scripts_method() {
    wp_enqueue_script(array('jquery'));
}
add_action('admin_enqueue_scripts', 'my_scripts_method');

Замените этот код:

jQuery(document).ready(function()
        {
        //здесь будет jQuery код
        }

на:

jQuery(document).ready(function($) {
    // $() будет работать как алиас для jQuery() внутри этой функции
});
13 янв. 2013 г. 21:21:09
Комментарии

Я не использую символ $ в своем коде jQuery, так что это не относится к вопросу. Моя проблема в том, что jQuery вообще не загружается (см. обновленный вопрос)

Scott B Scott B
13 янв. 2013 г. 21:32:47

см. обновленный ответ!

Muhammad Furqan Muhammad Furqan
13 янв. 2013 г. 21:41:28
0

Хук admin_footer действительно подходит для кода Scott B. Однако, как правило, рекомендуется добавлять скрипты (и объявлять их зависимость от jQuery) так, как описано в ответе @Milo.

13 янв. 2013 г. 22:35:09
0

Обработчики событий

Простой пример:

  • Скрипт выполняется сразу при запуске, так как не использует никаких обработчиков событий JavaScript, таких как ожидание загрузки DOM, окна или чего-либо еще.
  • Подключенный скрипт (jQuery) будет загружен на соответствующих хуках: в head или - если подключен в середине страницы - в footer.

Поэтому jQuery просто недоступен в момент его вызова.

13 янв. 2013 г. 22:40:02