Не удается подключить jQuery к скрипту редактирования записи
В приведенном ниже коде, если я не укажу явную ссылку на библиотеку 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-скрипты
}
}//КОНЕЦ ФУНКЦИИ
}//КОНЕЦ УСЛОВИЯ

Используйте хук 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' );

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

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

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

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() внутри этой функции
});

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