Uncaught Error: Call to undefined function trailingslashit() エラーの修正方法

PHP をバージョン 7.4、8.0、または 8.1 にアップデートしようとして、サイトが HTTP エラー 500 と「Uncaught Error: Call to undefined function trailingslashit()」というエラーメッセージとともにダウンしてしまっていませんか?

「Call to undefined function trailingslashit()」エラーは、WordPress プロジェクトで一般的に発生します。このエラーは、コードが trailingslashit() 関数を呼び出そうとしているにもかかわらず、PHP がそれを見つけられない場合に発生します。この関数は通常、WordPress コアファイル wp-includes/formatting.php で定義されています。

undefined trailingslashit エラーを修正するには、次の手順を実行してください。

  1. wp-includes/formatting.php が存在し、破損していないかを確認します:

WordPress インストールの wp-includes ディレクトリ内に formatting.php ファイルが存在することを確認してください。ファイルが欠落していたり破損していたりする場合は、WordPress のクリーンなコピーから再度アップロードする必要があるかもしれません。WordPress の最新バージョンは https://wordpress.org/download/ からダウンロードできます。

  1. wp-load.php ファイルが正しくインクルードされていることを確認します:

カスタムプラグインやテーマで、trailingslashit() 関数を呼び出す前に wp-load.php ファイルがインクルードされていることを確認してください。このファイルは WordPress 環境とコア関数を読み込む役割を持っています。次のコードスニペットを使って読み込むことができます。

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

wp-load.php へのパスがわからない場合は、次のコードスニペットを使ってその場所を特定できます。

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. 関数名の競合を確認します:

別のプラグインやテーマが同じ名前 trailingslashit の関数を定義している可能性があります。その場合は、競合しているプラグインを無効化するか、別のテーマに切り替えることで問題を解決できます。

  1. 関数を手動で宣言する:

最終手段として、trailingslashit() 関数をプラグインやテーマ内で手動で定義することもできます。ただし、将来的に競合や互換性の問題を引き起こす可能性があるため、可能な限り避けるべきです。どうしても手動で定義する必要がある場合は、以下が関数定義です。

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

WordPress インストールに変更を加える前に、必ずファイルとデータベースのバックアップを取ることを忘れないでください。これは、まずステージングサイトで変更を試したり、事前に WP Staging でサイト全体のバックアップを作成したりするのに良いタイミングでもあります。

関連記事

Rene Hermenau

著者: Rene Hermenau

著者について: René Hermenau は WP STAGING の創設者です。WordPress のバックアップ、ステージング、移行、データベース処理、安全なデプロイメントワークフローに取り組んでいます。