PHP8系で「Warning: Attempt to read property "xxxxxx" 」エラーの対応方法
2024/03/29
PHP8系&WordPress6.4.3で「Warning: Attempt to read property "xxxxxx" on false in」というエラーログが見受けられた。以前「WordPressで精度の高い関連記事を表示」で追加したソースコードでエラーが発生している模様。以下に対応方法をメモ。
原因
存在しないプロパティの値をアロー演算子で取得しようとした際に発生するエラーとなる。
具体的には以下のようなソースコードでタグを設定していない記事を閲覧した際「array_push( $tag_ID, $tag->term_id );」の部分で「$tag->term_id」が存在しないためエラーが発生した。
$tags = get_the_tags($post->ID); $tag_ID = array(); foreach((array)$tags as $tag): array_push( $tag_ID, $tag->term_id ); endforeach;
対応方法
issetで値が存在するかチェックする。具体的には以下のような形。
if( isset($tag->term_id) ){ array_push( $tag_ID, $tag->term_id ); }
所感
PHPのメジャーバージョンアップを行うとやはり色々とエラーが出てくる。
WordPressだとWP自体やプラグインを更新すれば何とかなるが、独自に追加したようなソースコードとかは一つずつ対処していかないといけないのが割と大変。
公式案内で「PHP 7.4.x から PHP 8.0.x への移行」というページがあるので目を通しておいた方が良さそう。
関連記事
-
-
WordPressでユーザー毎にフラグを持たせ分岐処理を行う方法
WordPressでユーザー毎に何らかのフラグを持たせて、フラグによって分岐処理 ...
-
-
WordPressのxmlrpc.phpに対する攻撃の対策方法
サーバーの死活監視をしているシステムから、1つのサイトが落ちているとアラートがき ...
-
-
Contact form7で送信数を測定(トラッキングタグ)
contact form7でフォーム送信が完了した時点で計測されるようにトラッキ ...
-
-
WordPressのテーマファイル内で取得したオブジェクトを指定のフィールド名でソートする方法
WordPressのテーマファイル内で記事やカテゴリ一覧等を取得するとオブジェク ...
-
-
他所のサーバからWordPressの記事情報をpostIDを指定して取得する方法
他所のサーバからWPの記事IDを指定した上で、当該IDのタイトル・アイキャッチ画 ...