wp_enqueue_script został wywołany niepoprawnie

20

Nie wiem jak, ale teraz pojawia się ten błąd:

Uwaga: niepoprawnie wywołano wp_enqueue_style. Skrypty i style nie powinny być rejestrowane ani kolejkowane aż do haków wp_enqueue_scripts, admin_enqueue_scripts lub login_enqueue_scripts. Aby uzyskać więcej informacji, zobacz Debugowanie w WordPressie. (Ta wiadomość została dodana w wersji 3.3.) W wp-zawiera / functions.php w linii 3049

Uwaga: skrypt wp_enqueue_script został wywołany niepoprawnie. Skrypty i style nie powinny być rejestrowane ani kolejkowane aż do haków wp_enqueue_scripts, admin_enqueue_scripts lub login_enqueue_scripts. Aby uzyskać więcej informacji, zobacz Debugowanie w WordPressie. (Ta wiadomość została dodana w wersji 3.3.) W wp-zawiera / functions.php w linii 3049

Ostrzeżenie: Nie można modyfikować informacji o nagłówkach - nagłówki już wysłane przez (wyjście rozpoczęte w wp-include / functions.php: 3049) w wp-login.php w linii 415

Ostrzeżenie: Nie można modyfikować informacji nagłówka - nagłówki już wysłane przez (wyjście rozpoczęte w wp-include / functions.php: 3049) w wp-login.php w linii 427

To właśnie otrzymuję, gdy próbuję się zalogować ... Na innych stronach mam tylko dwa pierwsze błędy. Próbuję to naprawić, ale nie mogę. Jakieś sugestie?

raiden
źródło
1
Do Notices wydawać dość wymowne. Co próbowałeś, a co nie działało?
s_ha_dum
@ s_ha_dum Próbowałem wielu rzeczy, które znalazłem w Google ... teraz rozwiązania toscho działały dla mnie i mogę zalogować się do panelu administracyjnego, ale widzę, że coś jest nie tak z ładowaniem stylu, ponieważ czcionka jest nie taki sam jak był. Ciągle otrzymuję te błędy:
raiden

Odpowiedzi:

15

Wyłącz wszystkie wtyczki i przejdź do domyślnego motywu. Teraz powinno zniknąć.

Następnie włączaj każdy dodatek krok po kroku, aż problem powróci. Znasz teraz źródło, powiedzmy wtyczkę.

Wtyczka dzwoni prawdopodobnie wp_enqueue_scriptza wcześnie. Znajdź wszystkie wystąpienia tej funkcji, a następnie upewnij się, że są powiązane z określonymi działaniami:

  • wp_register_script() należy wezwać do działania wp_loaded
  • wp_enqueue_script na jednym z działań
    • wp_enqueue_scripts,
    • admin_enqueue_scripts,
    • customize_controls_enqueue_scripts lub
    • login_enqueue_scripts(zobacz ten wątek dla tego drugiego).
fuxia
źródło
Problem polega na tym, że nie mogę się zalogować, ponieważ otrzymuję również ten dziwny błąd związany z plikami cookie. Błąd mówi, że zablokowałem pliki cookie w przeglądarce, ale ich nie zablokowałem ... To takie dziwne, ponieważ wszystko, co zrobiłem dzisiaj, to dodanie kilku wierszy do style.css, wszystko było dobrze, ale kilka godzin po tych błędach.
raiden
@raiden Następnie zmień nazwę katalogu wtyczek na FTP, zrób to samo dla aktualnie aktywnego motywu.
fuxia
Teraz mogę zalogować się do panelu ... dziękuję! ale teraz dostaję jeszcze jeden błąd. Ostrzeżenie: Nie można modyfikować informacji nagłówka - nagłówki już wysłane przez (wyjście rozpoczęte w wp-obejmuje / funkcje.php: 3049) w wp-obejmuje / pluggable.php w linii 896
raiden
4

Na podstawie Gregory'ego Schultza rozwiązanie :

Zawiń wszystkie skrypty i style w funkcję i podłącz tę funkcję do enqueueakcji docelowej . 👇

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 - front-end

admin_enqueue_scripts - strona administratora

login_enqueue_scripts - Strona logowania

Mój k
źródło
2

Dzieje się tak dlatego, że funkcje te są wywoływane bezpośrednio z pliku functions.php, bez użycia funkcji. Dowiedz się, które linie w functions.php nie znajdują się w funkcji takiej jak ta, i dodaj je.

Przykład dla datepicker:

-Zamiast tego w 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');

-Dodamy to

    // Definiujemy funkcję:
    funkcja MYTHEME_scripts () {
    wp_enqueue_script ('jquery-ui-datepicker');
    }

    // Dodaj funkcje do listy ładowania WP.
    działanie dodatkowe („wp_enqueue_scripts”, „MYTHEME_scripts”);

    funkcja 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');
    }

    // Dodaj funkcje do listy ładowania WP.
    add Działalności („wp_enqueue_style”, „MYTHEME_styles”);

Mam nadzieję, że to działa

Albert Sauqué
źródło
1

Oznacza to, że istnieją 3 „punkty końcowe”, dla wp_enqueue_script()których są skrypty wp_enqueue_endendend dla interfejsu użytkownika, skrypty_enqueue_scripts dla ekranu logowania, skrypty_enqueue_script dla panelu administracyjnego. Sprawdź ten link .

Ten błąd występuje, ponieważ wp_enqueue_script()został wywołany niepoprawnie.

JMau
źródło
Rozumiem, co tam jest, ale nie wiem, jak (zaimplementować) to „Poprawka: Zamiast tego użyj skryptów wp_enqueue_scripts”.
raiden
oznacza to, że po prostu musisz użyć wp_enqueue_scriptszamiast, wp_print_stylesale wątpię, że ma to związek z twoją sprawą. To tylko przykład rozwiązywania problemów. W twoim przypadku jest kilka funkcji we wtyczkach lub motywie, które nadużywają, wp_enqueue_script()więc otrzymujesz ten błąd ... tak myślę.
JMau
Zaczynałem 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.pakować wszystkie moje skrypty i style w funkcje i informacja zniknęła.
Gregory Schultz
Poza tym nie dostaję błędów
Gregory Schultz
1

Zamiast wyłączać wszystkie wtyczki jeden po drugim lub modyfikować bazę kodu w celu debugowania, możesz użyć wtyczki Query Monitor, aby zawęzić źródło tego błędu.

Gdy zobaczysz ten błąd zgłoszony w konsoli:

wp_register_style został niepoprawnie wywołany. Skrypty i style nie powinny być rejestrowane ani kolejkowane aż do haków wp_enqueue_scripts, admin_enqueue_scripts lub login_enqueue_scripts. Aby uzyskać więcej informacji, zobacz Debugowanie w WordPressie. (Ta wiadomość została dodana w wersji 3.3.0.)

Ostatnia kolumna ( Component) pokaże wtyczkę, która powoduje błąd. Następnie wyszukaj wewnątrz tej wtyczki (lub motywu), aby znaleźć i rozwiązać problem.

Kevin Leary
źródło