このセクションでは、WordPress で出た“ Notice: Object of class WP_Post could not be converted to int ・・・” の注意文への対処について紹介していきます。

Notice: Object of class WP_Post could not be converted to int in /var/www/wordpress/wp-includes/general-template.php on line 1238

この注意は、WordPress 環境を CentOS から AlmaLinux へ移行した時に発生しました。

[原因]
対象となるファイル内の行数に書かれている変数名が、よく使われてしまうような一般的な命名になっているのが原因となっています。他で同じ名前の変数があったら意図しない動作をしてしまうため注意が促されています。

[確認]
エラーとなるファイル内の指定された行を確認した結果は以下です。調べた結果では、指定された行で使われている $page の変数がひっかかっているようです。変数名を変更する必要があります。

   1238         if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) {       ←注意された行
   1239                 /* translators: %s: Page number. */
   1240                 $title['page'] = sprintf( __( 'Page %s' ), max( $paged, $page ) );
   1241         }

[対処]
変数名 $pageを $my_page に変更します。変更する箇所は3ヶ所あります。

  (変更前)
   1183         global $page, $paged;
   ーー(省略)ーー
   1238         if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) {
   1239                 /* translators: %s: Page number. */
   1240                 $title['page'] = sprintf( __( 'Page %s' ), max( $paged, $page ) );
   1241         }

  (変更後)
   1183         global $my_page, $paged;
   ーー(省略)ーー
   1238         if ( ( $paged >= 2 || $my_page >= 2 ) && ! is_404() ) {
   1239                 /* translators: %s: Page number. */
   1240                 $title['page'] = sprintf( __( 'Page %s' ), max( $paged, $my_page ) );
   1241         }