wp_enqueue_script был вызван некорректно

6 мар. 2014 г., 21:54:16
Просмотры: 84.9K
Голосов: 33

Не знаю как, но теперь я получаю следующую ошибку:

Notice: wp_enqueue_style был вызван некорректно. Скрипты и стили не должны быть зарегистрированы или подключены до хуков wp_enqueue_scripts, admin_enqueue_scripts или login_enqueue_scripts. Пожалуйста, смотрите раздел Отладка в WordPress для получения дополнительной информации. (Это сообщение было добавлено в версии 3.3.) в wp-includes/functions.php на строке 3049

Notice: wp_enqueue_script был вызван некорректно. Скрипты и стили не должны быть зарегистрированы или подключены до хуков wp_enqueue_scripts, admin_enqueue_scripts или login_enqueue_scripts. Пожалуйста, смотрите раздел Отладка в WordPress для получения дополнительной информации. (Это сообщение было добавлено в версии 3.3.) в wp-includes/functions.php на строке 3049

Warning: Невозможно изменить информацию заголовка - заголовки уже были отправлены (вывод начат в wp-includes/functions.php:3049) в wp-login.php на строке 415

Warning: Невозможно изменить информацию заголовка - заголовки уже были отправлены (вывод начат в wp-includes/functions.php:3049) в wp-login.php на строке 427

Это то, что я получаю при попытке войти в систему... На других сайтах у меня есть только первые две ошибки. Я пытаюсь это исправить, но не могу. Есть какие-нибудь предложения?

2
Комментарии

Уведомления Notice кажутся довольно понятными. Что вы пробовали и что не сработало?

s_ha_dum s_ha_dum
6 мар. 2014 г. 22:06:16

@s_ha_dum Я попробовал многое из того, что нашел в Google... только что решение toscho сработало для меня, и я могу войти в админ-панель, но я вижу, что что-то не так с загрузкой стилей, потому что шрифт не такой, каким был раньше. Я продолжаю получать эти ошибки:

raiden raiden
6 мар. 2014 г. 22:35:59
Все ответы на вопрос 7
3
19

Отключите все плагины и переключитесь на стандартную тему. Проблема должна исчезнуть.

Затем включайте каждый аддон по одному, пока проблема не проявится снова. Теперь вы знаете источник — предположим, это плагин.

Вероятно, плагин вызывает wp_enqueue_script слишком рано. Найдите все вхождения этой функции и убедитесь, что они привязаны к конкретным действиям:

  • wp_register_script() должен вызываться для действия wp_loaded
  • wp_enqueue_script на одном из действий
    • wp_enqueue_scripts,
    • admin_enqueue_scripts,
    • customize_controls_enqueue_scripts или
    • login_enqueue_scripts (см. эту ветку для последнего).
6 мар. 2014 г. 22:09:51
Комментарии

Проблема в том, что я не могу войти в систему, потому что также получаю эту странную ошибку с куки. Ошибка говорит, что я заблокировал куки в браузере, но я их не блокировал... Это очень странно, потому что всё, что я делал сегодня — добавлял несколько строк в style.css, всё работало нормально, но через несколько часов появились эти ошибки.

raiden raiden
6 мар. 2014 г. 22:12:00

@raiden Тогда переименуй директорию своего плагина через FTP, сделай то же самое с текущей активной темой.

fuxia fuxia
6 мар. 2014 г. 22:13:05

Теперь я могу войти в панель... спасибо! Но теперь я получаю ещё одну ошибку: Warning: Cannot modify header information - headers already sent by (output started at wp-includes/functions.php:3049) in wp-includes/pluggable.php on line 896

raiden raiden
6 мар. 2014 г. 22:20:22
1
18

На основе решения Грегори Шульца:

Оберните все ваши скрипты и стили в функцию и подключите эту функцию к целевому действию enqueue.

function my_admin_scripts() {
  wp_enqueue_style( 'admin-css', get_stylesheet_directory_uri() . '/admin/css/admin.css' );
  wp_enqueue_script( 'admin-js', get_stylesheet_directory_uri() . '/admin/js/admin.js', true );
}
add_action( 'admin_enqueue_scripts', 'my_admin_scripts' );

wp_enqueue_scripts — фронтенд

admin_enqueue_scripts — административная панель

login_enqueue_scripts — страница входа

28 июн. 2018 г. 09:13:07
Комментарии

Это действительно помогает, спасибо :)

jrran90 jrran90
29 нояб. 2020 г. 16:29:32
0

Вместо того чтобы отключать все плагины по одному или изменять код для отладки, вы можете использовать плагин Query Monitor, чтобы определить источник ошибки.

Когда вы видите эту ошибку в консоли:

wp_register_style был вызван неправильно. Скрипты и стили не должны регистрироваться или подключаться до хуков wp_enqueue_scripts, admin_enqueue_scripts или login_enqueue_scripts. Для получения дополнительной информации смотрите раздел "Отладка в WordPress". (Это сообщение было добавлено в версии 3.3.0.)

Последняя колонка (Component) укажет на плагин, вызывающий ошибку. Затем выполните поиск внутри этого плагина (или темы), чтобы найти и исправить проблему.

10 июл. 2018 г. 19:47:19
1

Причина, по которой это происходит, заключается в том, что эти функции вызываются напрямую из файла functions.php, без использования функции. Найдите строки в functions.php, которые не находятся внутри функции, как показано ниже, и добавьте их.

Пример для datepicker:

- Вместо этого в functions.php:

wp_enqueue_script('jquery-ui-datepicker');
wp_enqueue_style('jquery-ui-css', '//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css');
wp_enqueue_style('jquery-ui-css', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css');

- Добавляем это

// Определяем функцию:
function MYTHEME_scripts() {
    wp_enqueue_script('jquery-ui-datepicker');
}
    
// Добавляем функцию в список загрузки WP.
add_action( 'wp_enqueue_scripts', 'MYTHEME_scripts' );
    
function MYTHEME_styles() {
    wp_enqueue_style('jquery-ui-css', '//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css');
    wp_enqueue_style('jquery-ui-css', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css');
}
    
// Добавляем функцию в список загрузки WP.
add_action( 'wp_enqueue_scripts', 'MYTHEME_styles' );
23 янв. 2019 г. 21:35:32
Комментарии

Нет хука wp_enqueue_style.
Лучшее и самое чистое решение, когда проблема возникает на сайте, а не в админке, предложил @Usman Ahmed

Ludwig Ludwig
6 мая 2021 г. 01:24:26
4

Это означает, что существует 3 "точки входа" для wp_enqueue_script(): wp_enqueue_scripts для фронтенда, login_enqueue_scripts для экрана входа и admin_enqueue_scripts для админ-панели. Проверьте эту ссылку.

Вы получаете эту ошибку, потому что wp_enqueue_script() был вызван неправильно.

6 мар. 2014 г. 22:06:22
Комментарии

Я понимаю, что там написано, но не знаю, как (реализовать?) это "Исправление: используйте wp_enqueue_scripts вместо этого."

raiden raiden
6 мар. 2014 г. 22:26:28

это означает, что вам просто нужно использовать wp_enqueue_scripts вместо wp_print_styles, но я сомневаюсь, что это относится к вашему случаю. Это просто пример решения проблемы. В вашем случае есть некоторые функции в плагинах или теме, которые неправильно используют wp_enqueue_script(), поэтому вы получаете эту ошибку... как я предполагаю.

JMau JMau
6 мар. 2014 г. 22:37:18

У меня появлялось уведомление Notice: wp_register_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or login_enqueue_scripts hooks. Я обернул все свои скрипты и стили в функцию, и уведомление исчезло.

Gregory Schultz Gregory Schultz
24 мая 2018 г. 03:24:58

Кроме того, у меня нет ошибок

Gregory Schultz Gregory Schultz
24 мая 2018 г. 03:25:12
0

Оберните это в хук с названием wp_enqueue_scripts.

Пример:

add_action( 'wp_enqueue_scripts', function() {
    wp_enqueue_style('style', get_stylesheet_uri(), false, false, 'all');
    wp_enqueue_script( 'custom-script', get_stylesheet_directory_uri() . '/script.js', true );
});
6 сент. 2020 г. 13:13:28
1

Проблема решилась после установки плагинов WordPress Classic Editor и Classic Widgets.

17 дек. 2021 г. 10:47:00
Комментарии

Похоже, это решает проблему за счёт отключения неработающего кода, а не его исправления

Rup Rup
17 дек. 2021 г. 13:15:55