Jak naprawic blad Uncaught Error: Call to undefined function trailingslashit()

Próbowałeś zaktualizować PHP do wersji 7.4, 8.0 lub 8.1 i Twoja witryna przestała działać, zwracając błąd HTTP 500 oraz komunikat „Uncaught Error: Call to undefined function trailingslashit()"?

Błąd „Call to undefined function trailingslashit()" zwykle pojawia się w projektach WordPress. Ten błąd występuje, gdy kod próbuje wywołać funkcję trailingslashit(), ale PHP nie może jej znaleźć. Funkcja ta jest zazwyczaj zdefiniowana w pliku rdzenia WordPressa wp-includes/formatting.php.

Aby naprawić błąd „undefined trailingslashit", wykonaj następujące kroki:

  1. Sprawdź, czy plik wp-includes/formatting.php istnieje i nie jest uszkodzony:

Upewnij się, że plik formatting.php znajduje się w katalogu wp-includes Twojej instalacji WordPressa. Jeśli plik jest brakujący lub uszkodzony, być może trzeba będzie wgrać go ponownie ze świeżej kopii WordPressa. Najnowszą wersję WordPressa możesz pobrać z https://wordpress.org/download/.

  1. Upewnij się, że plik wp-load.php jest poprawnie dołączony:

We własnej wtyczce lub motywie upewnij się, że plik wp-load.php został dołączony przed wywołaniem funkcji trailingslashit(). Plik ten odpowiada za załadowanie środowiska WordPressa i funkcji rdzenia. Możesz go dołączyć, używając poniższego fragmentu kodu:

PHP
require_once(ABSPATH . 'wp-load.php');

Jeśli nie znasz ścieżki do wp-load.php, możesz użyć poniższego fragmentu kodu, aby ją znaleźć:

PHP
$wp_load = dirname(__FILE__) . '/wp-load.php';
while (!file_exists($wp_load)) {
    $wp_load = dirname(dirname($wp_load)) . '/wp-load.php';
    if (dirname(dirname($wp_load)) === '/') {
        break;
    }
}
require_once($wp_load);
  1. Sprawdź konflikty nazw funkcji:

Możliwe, że inna wtyczka lub motyw zdefiniowała funkcję o tej samej nazwie trailingslashit. W takim przypadku możesz wyłączyć konfliktową wtyczkę lub przełączyć się na inny motyw, aby rozwiązać problem.

  1. Ręczna deklaracja funkcji:

W ostateczności możesz ręcznie zdefiniować funkcję trailingslashit() we własnej wtyczce lub motywie. Należy jednak tego unikać, jeśli to możliwe, ponieważ może to prowadzić do konfliktów i problemów z kompatybilnością w przyszłości. Jeśli musisz ją zdefiniować ręcznie, oto definicja funkcji:

PHP
if (!function_exists('trailingslashit')) {
    function trailingslashit($string) {
        return rtrim($string, '/') . '/';
    }
}

Pamiętaj, aby zawsze wykonywać kopię zapasową plików i bazy danych przed wprowadzaniem jakichkolwiek zmian w instalacji WordPressa. To dobry moment, aby najpierw przetestować zmiany na witrynie staging lub utworzyć pełną kopię zapasową witryny za pomocą WP Staging.

Powiązane artykuły

Rene Hermenau

Autor: Rene Hermenau

O autorze: René Hermenau jest założycielem WP STAGING. Zajmuje się kopiami zapasowymi WordPressa, środowiskami stagingowymi, migracjami, obsługą baz danych oraz bezpiecznymi procesami wdrażania.