お問い合わせはコチラから

PHP8にしたらカスタマイザーが真っ白!原因と修正方法は?

サイト運営

PHP8にすると保守されていない古いプラグインは色んなエラー(Warning含む)を吐くようになります。

特にレンタルサーバーがPHP8を標準にしているところが増えてきましたので、知らないうちにPHP8を使っている人も多いのではないかと思います。

とあるSWELLというテーマでPHP8を使ったサイトがあったのですが、カスタマイザーを開くと真っ白になって何も表示されなくなりました。

たまたま、検証ツールでPHPのエラーを確認できたので、直ぐに原因はわかったのですが、修正方法と合わせてメモしておきたいと思います。

Warning: Attempt to read property “ID” on null in というメッセージが出ていた

検証ツールを開くと、Uncaught SyntaxError: Unexpected token ‘<‘と表示されていました。

customize.phpの出力にゴミが載ってるわけです。

その原因は、別にありました。

Warning: Attempt to read property “ID” on null inというメッセージが混じっており、そのエラーメッセージが検証ツールがエラーになっている直接の原因でした。

では、そのWarningはなぜ出ているのか?というと、プラグインのファイルの中で出ていました。

問題が起きたのは、Avator Managerというプラグイン

Avator Managerというプラグインがあります。

Avatar Manager
Avatar Manager for WordPress is a sweet and simple plugin for storing avatars locally and more. Easily.
  • バージョン:1.6.1
  • 最終更新日:3年前
  • 有効インストール数:9,000+
  • WordPress バージョン:3.5またはそれ以降
  • 検証済み最新バージョン:5.6.12

プラグインは対応するPHPのバージョンの表記が無いので、最終更新日と検証済みのWordpressバージョンの確認が重要です。

$post->IDという部分が問題箇所

プラグインファイルの中で、$post->IDを参照しているのですが、カスタマイザーを表示している時は$postがnullになるようです。

nullであっても、PHP7では問題ないのですが、PHP8から問題になります。

$postがnullの場合は、$post->IDを参照しないように修正すればいいわけです。

参考:https://worklog.be/archives/4734

修正方法

$postがnullであるか判定するif文を追加しました。

/**
 * Displays media states for avatar images.
 *
 * @uses get_post_meta() For retrieving attachment meta fields.
 * @uses __() For retrieving the translated string from the translate().
 * @uses apply_filters() For calling the functions added to a filter hook.
 *
 * @since Avatar Manager 1.2.0
 *
 * @param array $media_states An associative array with media states.
 * @return array An associative array with media states.
 */
function avatar_manager_display_media_states( $media_states ) {
	global $post;
if ( !is_null( $post ) ) {//追加
	// Retrieves attachment meta field based on attachment ID.
	$meta_avatar = get_post_meta( $post->ID, '_avatar_manager_is_custom_avatar', true );
}//追加
	if ( ! empty( $meta_avatar ) )
		$media_states[] = __( 'Avatar Image', 'avatar-manager' );

	// Calls the functions added to avatar_manager_display_media_states filter
	// hook.
	return apply_filters( 'avatar_manager_display_media_states', $media_states );
}

add_filter( 'display_media_states', 'avatar_manager_display_media_states', 10, 1 );

まとめ

PHP8にしたつもりはないのに、勝手にPHP8になっていることもありますので、なんか変だな?と思ったらサーバーのコンパネでPHPのバージョンを確認してPHP8だったらPHP7.4にしてみることをお奨めします。

この記事を書いた人
ブーン

はるばる日本よりオランダ王国へやってまいりました。
自分の経験が少しでも参考になれば嬉しいです。
お問い合わせは、『こちら』からお願い致します。

\ブーンをフォロー/
スポンサーリンク
サイト運営
\シェアお願いします!/
\ブーンをフォロー/
こんな記事も読まれています

失敗しないレンタルサーバーランキング

mixhost

不正アクセスに強くて使いやすいおススメサーバー
\本サイトで利用中/
メリット①:自動ウィルス駆除対応
メリット②:サイトの表示速度が速い!
メリット③:転送量の上限が多い!
メリット④:自由にプラン変更ができ、アクセス増にも対応できる!
メリット⑤:バックアップデータが無料で復元できる!
メリット⑥:Wordpressが簡単にインストールできる!
メリット⑦:どのプランでも初期費用が無料!
メリット⑧:10日間の無料お試し期間と30日の返金保証!

Conoha Wing

国内Wordpress最速の最強サーバー
メリット①:圧倒的な表示速度
メリット②:レンタルサーバーと独自ドメインがセットでお得◎
メリット③:プラン変更はすべてのプランで自由自在
メリット④:一か月の利用転送量の制限が緩い(9TB~)
メリット⑤:WordPresサイトの移行が簡単

エックスサーバー

国内シェアNo1の安定性と実績が魅力。ALL SSDで死角なしの万能サーバー。
メリット①:サイトの表示速度が安定して速い!
メリット②:アクセス負荷に強くて安定性が高い!
メリット③:24時間365日の充実サポートで安心!電話サポートもあり!
メリット④:転送量が多い!
メリット⑤:自動バックアップ機能付き!
メリット⑥:WordPressが簡単にインストールできる!
メリット⑦:10日の無料お試し期間がある!

タイトルとURLをコピーしました