Nieprzechwycony błąd WordPress: wywołanie niezdefiniowanego rozwiązania funkcji create_function().

Czy ty też byłeśWordPresskomunikat o błędzie”Uncaught Error: Call to undefined function create_function() in SNIPPET:62– Bolała Cię głowa?

Rozwiązanie tego problemu właściwie nie jest trudne. Porozmawiajmy teraz szczegółowo o tym, dlaczego ten problem występuje i jak go rozwiązać za pomocą prostego i skutecznego kodu.

Dlaczego otrzymuję błędy create_function?

Najpierw trochę wiedzy ogólnej. W PHP 7.2,create_function()Została przestarzała i w PHP 8.0 ta funkcja została bezpośrednio usunięta. Innymi słowy, jeśli Twój serwer został zaktualizowany do PHP 7.2 lub nowszego i nadal używa starego kodu, ten problem wystąpi.

Ale sedno problemu polega na tym, że:create_functionJest to produkt starej epoki. Problem z nim polega nie tylko na tym, że nie jest już obsługiwany, ale także powoduje słabą wydajność i potencjalne zagrożenia bezpieczeństwa. Nowe rozwiązanie ma zostać wykorzystanefunkcja anonimowa(Funkcje anonimowe).

Zmodyfikuj kod: Rozwiąż błąd tworzenia_funkcji

Nieprzechwycony błąd WordPress: wywołanie niezdefiniowanego rozwiązania funkcji create_function().

Zobaczmy teraz, jak zastąpić stary kod. Poniżej znajduje się szczegółowy plan modyfikacji kodu:

oryginalny kod

//彻底禁止WordPress缩略图
add_filter( 'add_image_size', create_function( '', 'return 1;' ) );

//自定义登录页面的LOGO链接为首页链接
add_filter('login_headerurl', create_function(false,"return get_bloginfo('url');"));

Zmodyfikowany kod

// 彻底禁止 WordPress 缩略图
add_filter( 'add_image_size', function() { return 1; } );

// 自定义登录页面的 LOGO 链接为首页链接
add_filter( 'login_headerurl', function() { return get_bloginfo('url'); } );

Wyjaśnienie kodu:

  • function() { return 1; } to funkcja anonimowa, która nie wymaga parametrów i zwrotów 1.
  • get_bloginfo('url') Jest to funkcja zwracająca adres strony głównej serwisu. Owijamy ją również funkcją anonimową.

Lepsze podejście: należy zachować ostrożność przy wyłączaniu miniatur

Całkowite wyłączenie miniatur WordPress czasami nie jest najlepszą opcją. Jeśli niektóre motywy lub wtyczki wymagają obrazów o określonym rozmiarze, całkowite ich wyłączenie może spowodować nieoczekiwane problemy.

Oto bardziej elastyczne rozwiązanie: selektywnie wyłączaj niepotrzebne rozmiary obrazów za pomocą filtrów.

Przykładowy kod

add_filter( 'intermediate_image_sizes_advanced', function( $sizes ) {
    unset( $sizes['thumbnail'] ); // 禁用缩略图
    unset( $sizes['medium'] );    // 禁用中等大小
    unset( $sizes['large'] );     // 禁用大图
    return $sizes;
} );

Takie podejście nie tylko rozwiązuje problem, ale także utrzymuje zgodność z niektórymi funkcjami.

Zmodyfikuj kod

Dodaj zmodyfikowany kod do jednej z następujących lokalizacji:

  1. aktualnego tematu functions.php plik.
  2. Wtyczka funkcji niestandardowych (zalecana metoda uniknięcia pokrycia kodu aktualizacjami motywu).

Co mam zrobić, jeśli błąd nadal występuje po modyfikacji kodu?

Jeśli wtyczka Fluent-snippet-storage jest włączona, a po modyfikacji nadal występują błędy, być może jest ona włączonafluent-snippet-storage/index.phpZnajduje się w nim pamięć podręczna i należy usunąć kod błędu error_files.

zjawiać sięwp-content/fluent-snippet-storage/index.phpFile, przewiń w dół do końca i znajdź kod podobny do następującego:

'error_files' => 
array (
'1-e7a7bbe999a4wordpresse5a4b4e983a8e697a0e794a8e4bfa1e681af.php' => 'Uncaught Error: Call to undefined function create_function() in SNIPPET:62',
),
);

Kod do usunięcia tych rekordów błędów:

'1-e7a7bbe999a4wordpresse5a4b4e983a8e697a0e794a8e4bfa1e681af.php' => 'Uncaught Error: Call to undefined function create_function() in SNIPPET:62',

Dodatkowa wskazówka: Zapewnij zgodność kodu

Przed modyfikacją kodu zaleca się wykonanie kopii zapasowej plików serwisu i bazy danych. Możesz używać wtyczek (takich jak UpdraftPlus), aby szybko tworzyć kopie zapasowe i uniknąć zaskoczenia, gdy coś pójdzie nie tak.

Jednocześnie, jeśli nie znasz PHP, zaleca się próbę modyfikacji kodu w środowisku testowym, a nie bezpośrednio operowanie środowiskiem produkcyjnym.

Optymalizacja kodu to ciągła walka

To pytanie wydaje się proste, ale w rzeczywistości jest częstym problemem, z którym należy się zmierzyć przy tworzeniu stron internetowych:Zgodność starego kodu z nowym środowiskiem. Niezależnie od tego, czy jest to aktualizacja wersji PHP, czy ulepszenie funkcji WordPressa, wszystkie mają na celu zapewnienie wydajniejszego i bezpieczniejszego działania witryny.

Dla programistów istotna jest terminowa aktualizacja kodu i poznawanie nowych technologii. Funkcje anonimowe nie tylko czynią kod bardziej zwięzłym, ale także poprawiają wydajność i zmniejszają potencjalne zagrożenia bezpieczeństwa. Każda optymalizacja prowadzi Twoją witrynę o krok dalej.

podsumowując

  1. create_function() Nie jest już obsługiwany w PHP 7.2 i nowszych wersjach i zamiast tego zaleca się używanie funkcji anonimowych.
  2. Po modyfikacji kodu Twoja witryna będzie działać wydajniej i bezpieczniej.
  3. Aby zapewnić lepszą kompatybilność z wtyczkami i motywami, lepszym rozwiązaniem może być selektywne wyłączanie rozmiarów obrazów.
  4. Optymalizacja kodu to nie tylko naprawienie problemów, ale także krok w kierunku poprawy jakości Twojej witryny.

Jeśli napotkałeś podobne problemy, możesz wypróbować rozwiązania opisane w tym artykule.

发表 评论

Twój adres e-mail nie zostanie opublikowany. 必填 项 已 用 * 标注

Katalog artykułów
Przewiń do góry