2026年5月20日
2026年5月20日
PHP8.0/8.1/8.2との互換性問題を解決する方法【プラグイン・テーマ対応】
はじめに
PHPを8.0・8.1・8.2にアップグレードした後にWordPressでエラーが発生するケースが増えています。PHP8系では7.x系で動いていた一部の書き方がエラーになるため、プラグインやテーマがPHP8に対応していない場合に問題が起きます。
PHP8で壊れやすい主な変更点
// 1. 型の厳格化:数値文字列を非数値と演算するとTypeError
$result = "abc" + 1; // PHP7ではWarning → PHP8ではTypeError
// 2. 配列のソート安定性(動作変更)
// usort等の比較関数が0を返す場合の順序が変わった
// 3. Named Arguments(新機能で既存コードと競合)
array_slice($array, offset: 0, length: 5);
// 4. match式(PHP8の新構文、古いコードと競合しない)
// 5. null処理の変更
$obj = null;
$obj->method(); // PHP7ではNotice → PHP8ではFatal error
PHP8.1・8.2での追加変更
// PHP8.1:enum(列挙型)追加・Intersection Types
// readonly プロパティ追加
// PHP8.1で廃止:
// mysql_* 関数(PHP7で削除済みだが念のため確認)
// ${var} 文字列補間形式 → Deprecated
// PHP8.2:動的プロパティの廃止
class MyClass {}
$obj = new MyClass();
$obj->newProp = 'value'; // PHP8.2でDeprecated
解決手順
ステップ1:エラーの詳細を確認
// wp-config.phpでデバッグモードを有効化
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
/wp-content/debug.logでエラーのファイル名を確認して、どのプラグイン・テーマが原因か特定します。
ステップ2:プラグイン・テーマを最新版に更新
PHP8対応は各プラグインのアップデートで順次対応されています。まず全プラグインとテーマを最新版に更新します:
1. 管理画面 → 「ダッシュボード」→「更新」
2. 「すべて更新」をクリック
ステップ3:互換性のないプラグインを特定
特定のプラグインが原因の場合、FTPで無効化して確認:
/wp-content/plugins/問題のプラグイン/
→ /wp-content/plugins/問題のプラグイン_off/
または「PHP Compatibility Checker」プラグインで一括チェックも可能です。
ステップ4:PHPバージョンを一時的に下げる
問題の多いプラグインが必要不可欠で代替がない場合、一時的にPHPを下げることも選択肢です:
エックスサーバーの場合:
1. サーバーパネル → 「PHP Ver.切替」
2. 対象ドメインを選択
3. PHPバージョンを変更(例:8.2→8.1→8.0→7.4)
ConoHaの場合:
1. コントロールパネル → 「サイト管理」→「PHP設定」
2. PHPバージョンを変更
ただし、これは一時的な解決策です。使用中のプラグインをPHP8対応のものに切り替えるか、代替プラグインを探すことを推奨します。
ステップ5:PHP8で廃止された関数を修正
自作のコード(functions.phpや自作プラグイン)にPHP8非互換のコードがある場合の修正例:
// ❌ PHP7まで:create_function(PHP8で廃止)
$fn = create_function('$x', 'return $x * 2;');
// ✅ PHP8対応
$fn = function($x) { return $x * 2; };
// ❌ PHP7まで:each()(PHP8で廃止)
while (list($key, $value) = each($array)) { ... }
// ✅ PHP8対応
foreach ($array as $key => $value) { ... }
PHP Compatibility Checkerプラグインの使い方
1. プラグインをインストール・有効化
2. 「ツール」→「PHP Compatibility」
3. 確認したいPHPバージョンを選択して「Run Test」
4. 非互換コードの一覧が表示される
まとめ
PHP8互換性エラーは①デバッグモードで原因プラグインを特定→②プラグインを最新版に更新→③どうしても動かなければPHPバージョンを一時的に下げるの順で対処します。長期的にはPHP8対応のプラグイン・テーマへの移行が必要です。
関連記事: