NextGEN GalleryでTrying to access array offset on null警告の原因と直し方

NextGEN GalleryでTrying to access array offset on null警告の原因と直し方

NextGEN GalleryでTrying to access array offset on null警告の原因と直し方

NextGEN Gallery(管理画面では「NextGEN Gallery」と表示)で「Trying to access array offset on null」というPHP警告が繰り返し出力される場合、原因はテンプレートファイル内で $thumb_size 変数がnullのまま配列としてアクセスされていることにある。テーマのfunctions.phpに一時的なnullチェックを追加するか、プラグインの該当テンプレートを直接修正することで警告を止められる。

なぜ「Trying to access array offset on null」が発生するのか

なぜ「Trying to access array offset on null」が発生するのか

この警告はPHP 7.4以降で追加された「配列オフセットへのnullアクセス」に関するエラーレベル通知だ。NextGEN Galleryの /templates/Thumbnails/index.php 110行目周辺では、サムネイル画像の幅と高さを次のように取得しようとしている。

$thumb_size['width']
$thumb_size['height']

通常 $thumb_size にはサムネイルサイズの設定が格納された配列が入るが、特定の条件下(ギャラリー設定の不整合、画像メタデータの欠落、プラグイン内部の処理順序による変数未代入)でnullになる。nullの変数に対して配列のキーでアクセスしようとすると、PHPは警告を発行する仕組みだ。

エラーの発生箇所を特定する手順

エラーの発生箇所を特定する手順

警告メッセージにファイルパスと行番号が含まれているため、どこで問題が起きているかは一目瞭然に思える。しかし実際には以下の点を確認しておくと、修正後の再発防止に役立つ。

Before エラー発生時の状態
$thumb_size = null;
echo $thumb_size[‘width’]; // PHP Warning
After nullチェック追加後
if (is_array($thumb_size)) {
  echo $thumb_size[‘width’];
}
エラー状態  修正後

上図のように、変数が配列であることを確認する is_array() チェックを入れるだけで警告は出なくなる。以下に具体的な修正方法を3つのレベルで示す。

デバッグモードで警告を可視化する

本番サイトでは警告が非表示設定になっていることも多い。問題を見逃さないために、一時的に wp-config.php を編集してデバッグモードを有効にする。

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

WP_DEBUG_DISPLAY をfalseにすれば画面には警告が出ず、/wp-content/debug.log に記録される。警告の再現性を確認したら、必ず WP_DEBUG をfalseに戻すことを忘れないようにしよう。

管理画面からプラグインのバージョンを確認する

「プラグイン」画面でNextGEN Galleryのバージョンが最新かどうかを確認する。2026年6月現在、NextGEN Galleryはバージョン3系が主流で、多くのnull関連の警告はバージョンアップで修正されている。更新が可能であれば、まずプラグインの更新を実行するのが最も安全な対処法だ。

エラーログで発生頻度とパターンを見極める

警告が散発的なのか、特定のページ表示時のみなのかによって対応の緊急度が変わる。デバッグログを確認し、同じ警告が何度も出ているなら恒久的な修正が必要だ。特定のギャラリーページだけなら、そのギャラリーの設定に問題がある可能性が高い。

警告を止める3つの修正アプローチ

警告を止める3つの修正アプローチ

NextGEN Galleryのコアファイルを直接編集する方法、子テーマから上書きする方法、functions.phpでフィルターフックを使う方法の3つがある。サイトの運用方針に合わせて選んでほしい。

STEP 1 プラグインを最新版に更新する(最も安全)
STEP 2 それでも直らなければ index.php にnullチェックを追加
STEP 3 更新で上書きされるため、必要なら子テーマやフィルターで恒久対応

アプローチ1 プラグインのコアファイルを直接修正する

最も短期的で簡単な方法だ。ただしNextGEN Galleryが更新されると修正が上書きされるため、恒久的な対応にはならない。該当ファイルは以下にある。

wp-content/plugins/nextgen-gallery/templates/Thumbnails/index.php

110行目と111行目付近の $thumb_size['width']$thumb_size['height'] を、以下のように is_array() で囲む。

if (is_array($thumb_size)) {
    $width  = $thumb_size['width'];
    $height = $thumb_size['height'];
} else {
    $width  = 240; // デフォルトの幅
    $height = 160; // デフォルトの高さ
}

デフォルト値には、NextGEN Galleryの「ギャラリー設定 → サムネイル設定」で指定されているサイズを入れておくと、画像が崩れずに表示される。

アプローチ2 子テーマでテンプレートを上書きする

NextGEN Galleryはテーマによるテンプレート上書きをサポートしている。修正した index.php を以下のパスに配置すれば、プラグイン更新後も修正が維持される。

wp-content/themes/your-child-theme/nggallery/thumbnails/index.php

元の /templates/Thumbnails/index.php をコピーし、該当行にnullチェックを追加して保存するだけだ。子テーマを使っていない場合は、この機会に作成しておくと今後のカスタマイズにも役立つ。

アプローチ3 functions.phpで警告を抑制する(非推奨)

どうしてもテンプレートを修正できない事情がある場合は、警告そのものを表示させない方法もある。ただし根本解決ではないため、最終手段として理解しておくといい。

add_action('init', function() {
    if (defined('WP_DEBUG') && WP_DEBUG) {
        error_reporting(E_ALL & ~E_WARNING);
    }
});

このコードはWordPressのデバッグモードが有効な場合のみ警告レベルを下げる。しかし他の重要な警告も見逃すリスクがあるため、あくまで一時的な回避策として考えてほしい。

修正後も警告が消えない場合の追加チェック

修正後も警告が消えない場合の追加チェック

上記の修正を適用してもまだ警告が出るなら、キャッシュのクリアを試す。NextGEN Galleryは独自の画像キャッシュを持っており、テンプレートの変更がすぐに反映されないことがある。

NextGEN Galleryのキャッシュをクリアする

管理画面の「ギャラリー → その他のオプション → 画像オプション」にある「キャッシュをクリア」ボタンを実行する。さらにWordPress全体のキャッシュ(プラグインやCDNを使用している場合はそれらも含めて)をクリアすると、テンプレートの変更が確実に反映される。

nullが発生する根本原因を探る

$thumb_size がnullになるのは、ギャラリー設定や画像のアップロード時にメタデータが正しく生成されなかった場合に多い。管理画面から該当ギャラリーを開き、各画像の「メタデータを更新」を実行する。また、ギャラリー設定で「サムネイルサイズ」が未設定になっていないかも確認してほしい。

よくある質問

この警告を放置してもサイトは壊れないか

警告(Warning)はエラー(Fatal Error)と異なり、スクリプトの実行は継続される。サムネイル画像が一部表示されない可能性はあるが、サイト全体が停止することはない。ただし警告が大量に出力されるとデバッグログが肥大化し、サーバーのディスク容量を圧迫する原因になる。

NextGEN Gallery以外のプラグインでも同様の警告は出るのか

PHP 7.4以降では配列アクセスの扱いが厳格化されたため、古いプラグインやテーマで同様の警告が発生することがある。対象プラグインが更新されていない場合は、今回紹介したnullチェックの手法を応用して修正可能だ。

警告が debug.log に出続けて容量がいっぱいになりそうだ

WP_DEBUG_LOG をtrueにしたまま長期間放置すると、ログファイルが数GBに膨れ上がることがある。問題を特定したら速やかに WP_DEBUG をfalseに戻す。どうしてもデバッグを続ける必要があるなら、定期的にログローテーションを行うか、WP_DEBUG_LOG'/path/to/custom-debug.log' のように指定して管理しやすくするといい。

プラグインを更新したくない(カスタマイズが消えるのが怖い)

NextGEN Galleryのテンプレートを直接編集している場合、プラグイン更新で修正が上書きされる不安は理解できる。今回紹介した子テーマによるテンプレート上書きを使えば、プラグイン本体には手を加えずに済む。カスタマイズを維持したまま、コアのバグ修正やセキュリティアップデートだけを取り込める。

NextGEN Galleryの代わりになるプラグインはあるか

標準の「メディアとカテゴリー」を使ったギャラリー機能でも十分な場合や、Envira GalleryやFooGalleryといった代替プラグインも選択肢になる。ただしNextGEN Galleryは長年の実績があり、ギャラリー数が多いサイトでは移行コストを考慮する必要がある。

この記事のポイント

  • 「Trying to access array offset on null」はPHP 7.4以降の厳格化による警告
  • NextGEN Galleryの /templates/Thumbnails/index.php$thumb_size がnullになるのが原因
  • is_array() によるnullチェックで警告を止められる
  • 子テーマでテンプレートを上書きすればプラグイン更新後も修正が維持される
  • 修正後はNextGEN GalleryのキャッシュとWordPress全体のキャッシュをクリアする
佐々木 太陽

・ Reddit、Stack Overflow、WordPress.org フォーラムを日々巡回し、現場の悩みを拾い上げて記事化 ・ WordPress、WooCommerce、Next.js などモダンWeb制作領域のトラブルシューティングが専門 ・ 「検索しても答えが見つからなかった」を一つでも減らすことが目標 ・ エラーメッセージから根本原因にたどり着く粘り強い調査が得意 ・ 初心者がつまずきやすい箇所を先回りで解決する記事作りを心がけている

メッセージを残す