XREA PHP バージョンアップ履歴 ワードプレスが更新を推奨 (エラー修正方法)
2025年8月5日
Categories | ブログ(WordPress) SEO
XREA PHP バージョンアップ履歴 ワードプレスが更新を推奨
バージョンアップでエラーが発生した時の修正方法
2025.08.05 (php7.4 → php8.3)※現在使用不可
※php8.3にバージョンアップすると、当ブログでは不具合が生じ表示されなくなる。
php8.0でも試してみたが、やはりエラー表示。
当ブログは213年5月21日に公開した自作テーマ。メンテの必要がないようにシンプルるに制作。
エラーチェック備忘録
先ずはPHPの互換性をチェックするプラグイン「PHP Compatibility Checker」で
原因究明してみる。プラグインが出しているエラーを「テーマ側が画面に表示している」だけの可能があるので。
随分前にインストールしたプラグイン。Realtime Calendar
PHP8には非対応なので削除。
XML Sitemap Generator for Google 4.1.21
サイトマップを自動生成してくれるプラグイン。
2023年くらいから不具合が続き、サイトマップを自動生成しなくなったよう。
2025年8月に削除。
代替えとしてAIOSEOのサイトマップを使ってみた。
しかし、パーマリンクが?p=123形式だとサイトマップ機能が使えないことが判明。
困った。やはりパーマリンクを変更するべきか・・・取りあえず放置する。
※ パーマリンクが?p=123形式だとSEOに悪影響だそう。
プラグインをいじってみたが、一番の原因は大昔に作ったテーマと判明。
テーマなどのエラーを見つけて書き出す方法は、「DEBUG_LOG」を使う。
wp-config.php に下記を記述。
* この値を true にすると、開発中に注意 (notice) を表示します。
* テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。
この1行を → define(‘WP_DEBUG’, false);
※falseはデバッグモードを無効にするという意味ね。
↓ ↓ 3行に変更する。
define(‘WP_DEBUG’, true);
define(‘WP_DEBUG_LOG’, true);
define(‘WP_DEBUG_DISPLAY’, false);
※define(‘WP_DEBUG’, false);の記述がない場合は3行だけを記述。
その後ブログを表示させると「debug.log」が生成され、それにエラーが書き出される。
デバックファイルの場所 /wp-content/debug.log
エラー01. /themes/blog/functions.php
PHP Deprecated: 関数 add_custom_image_header は、バージョン 3.4.0 から非推奨になりました ! 代わりに add_theme_support( ‘custom-header’, $args ) を使用してください・・・
エアラー01. 修正方法
関数 add_custom_image_header は /themes/blog/functions.php
にこう記述されていた。
add_custom_image_header('','admin_header_style');
↓ 新しい構文に変更
add_theme_support('custom-header', array(
'admin-head-callback' => 'admin_header_style',
));
エラー02. /themes/blog/functions.php
PHP Notice: 関数 register_sidebar が誤って呼び出されました。「サイドバー 1」サイドバーの引数の配列で id が設定されませんでした。既定では「sidebar-1」です。id に「sidebar-1」を設定することでこの情報を消して、既存のサイドバーのコンテンツを保つことができます。register_sidebar()に id を渡していないために出ている Notice です。
修正前
//ウィジェット
register_sidebar();
修正後
// ウィジェット
register_sidebar(array(
'name' => 'サイドバー 1',
'id' => 'sidebar-1',
'before_widget' => '<li id="%1$s" class="widget %2$s">', // ← li で囲む
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">', // ← 元のCSSに合わせて h2
'after_title' => '</h2>',
));
※ 当ブログの sidebar.php を見ると仕組みは
<div id=”sidebar”> の中で <ul> を置き、その中に <?php dynamic_sidebar(); ?> を出力している。つまり register_sidebar() の before_widget / after_widget は <li> タグにしておく必要がある。そうしないと <ul> の中に <div> が入ってしまって、レイアウトやスタイルが崩れる原因になります。
エラー03. /themes/blog/comments.php
PHP Deprecated: ファイル comments.php のないテーマ は、バージョン 3.0.0 から非推奨になり、代替手段がなくなりました。 comments.php テンプレートをテーマに含めてください・・・
何故か comments.phpが存在しない。でも記事内にはコメント機能が問題なく作動している。昔に自作したテーマだからどう構築したか記憶にない。取りあえずダミーのcomments.phpを作成してエラーを回避しました。
ファイルの中身はこんな感じです。
<?php
/**
* comments.php
* WordPress コメントテンプレート
*/
if ( post_password_required() ) {
return;
}
?>
<div id="comments" class="comments-area">
<?php if ( have_comments() ) : ?>
<h2 class="comments-title">
<?php
printf(
_nx( 'One Comment', '%1$s Comments', get_comments_number(), 'comments title', 'textdomain' ),
number_format_i18n( get_comments_number() )
);
?>
</h2>
<ol class="comment-list">
<?php
wp_list_comments( array(
'style' => 'ol',
'short_ping' => true,
) );
?>
</ol>
<?php the_comments_navigation(); ?>
<?php endif; ?>
<?php
// コメントが閉じている場合のメッセージ
if ( ! comments_open() && get_comments_number() ) :
?>
<p class="no-comments"><?php esc_html_e( 'Comments are closed.', 'textdomain' ); ?></p>
<?php endif; ?>
<?php comment_form(); ?>
</div>
まとめ
警告だけ消したいなら「ダミー」でもよかった。でもコメント欄も必要なら、この 標準の comments.php を置けば両方解決でた。
エラー04.
PHP Notice: Undefined variable: counter in /blog/wp-content/themes/blog/home.php on line 9
変数 $counter が 定義される前に使われていることを示している。
home.php の 9行目 で $counter を利用しているが、その前に初期化していないためエラーが発生しています。
修正前
<?php if(have_posts()): while(have_posts()): the_post(); $counter++; ?>
修正後
<?php if (have_posts()): $counter = 0; while (have_posts()): the_post(); $counter++; ?>
まとめ
関数 $counter は、単にループ内で「何件目の記事か」を数えるためだけの変数です。ループ前に初期化しろというエラーでした。記事の URL(パーマリンク)、ID、スラッグなど WordPress のデータには一切影響しません。ループ内で $counter++ して条件分岐しているだけなので、表示内容のレイアウトや「先頭記事だけ大きく表示する」などの見た目にしか関係しません。初期化しても 1 件目から数え直すだけなので、リンクやSEO、データベースの情報には全く影響ありません。
debug.log でのエラーは4つ。これらを修正しエラーはなくなりました。
しかし、php8にバージョンアップしてみると、やはり何も表示されなくなります。
さぁ、どうする?
色々と模索していたらphp互換性をチェックするプラグイン
PHP Compatibility Checker
は2021年ころから提供が終了しているらしい。
良かれとphp互換チェックに真っ先に導入したプラグインだったが。
どうするどうする・・・
2022.08.17. (php7.3→php7.4)
2019.04.04. (php7.2→php7.3)
レンタルサーバーから、XREAにおいてPHPの最新バージョン7.3に対応したと
アナウンスがありました。
PHP7.3対応は2019年4月1日(月)より。
◆ PHPの設定変更方法
新サーバーコントロールパネルの左メニュー「サイト設定」で
「サイト設定の変更」「PHP」を “php73” に選択します。
「サイト設定を変更する」ボタンを押します。
約5~10分程度で反映されます。
↓ ↓
気になるところはインストールしたプラグイン。
最新版であれば問題なさそうだが、
いちお不具合がないか?反映後(10分程度)確認する。
問題なし。