タグアーカイブ NextGEN Gallery

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全体のキャッシュをクリアする