PHP8以上にしたらエラーになった時の解決対処方法の備忘録
今回、行った事、
WordPress本体も4か5か忘れたけどかなり古いまま更新していなかった。
PHPも5.何とかだった。
instagramfeed(smashbaloon何とか)など、正常に動かなくなったので、
この機会に、全部新しくしようと思った。
そもそも、functions.phpに勝手にWP本体を更新しないように、また更新情報も非表示にするように記載していたので、コメントアウトした。
以下のような記述をつけていた。
↓
// バージョン更新を非表示にする
add_filter('pre_site_transient_update_core', '__return_zero');
// APIによるバージョンチェックの通信をさせない
remove_action('wp_version_check', 'wp_version_check');
remove_action('admin_init', '_maybe_update_core');
なので、以下のようにコメントアウトした
↓
// バージョン更新を非表示にする
//add_filter('pre_site_transient_update_core', '__return_zero');
// APIによるバージョンチェックの通信をさせない
//remove_action('wp_version_check', 'wp_version_check');
//remove_action('admin_init', '_maybe_update_core');
(2)
次に、さくらのsnupupで本番からバックアップを取得し、ステージングサーバー(DB5.5とPHP7.4で作成:いきなり8にすると真っ白になったから)
ステージングサーバに本番からのサイトをセットし、WP本体をこの時点での最新WP6.7.1に更新した。(WP本体を先に更新しないとうまくいかなかった、プラグインの更新はWP本体の後にしなければうまくいかなかった。)
※今回のケースでは、(2)をする際に、WP本体も、プラグインも更新する以前に、インストール自体ができなかったので、
ChatGPTに聞いて、wp-cpnfig.phpに以下を一時的に追記することでインストールができるようなので、追記した!しかし、セキュリティ上よくないのでインストールし更新が終わったら、必ず削除する事!!!
add_filter('https_ssl_verify', '__return_false');
↑
これで、WP本体とプラグインのインストールと更新ができた。
(3)結論としては、いきなりPHP8にしてWP本体やプラグインを更新すると真っ白になるので、PHP7.4にアップデートしてWP本体やプラグインを更新し、その後にPHP8以上にしなければならない。この時点の最新Wp6.7.1にしないとPHP8に対応していないかららしい。
(4)ここまでうまく行ったので、PHP8以上にしたら、phpの記述で厳しくなっていたりして、表示がおかしくなった。
具体的には、スライダーなどのJqueryがおかしいのとフッターが読み込まれていない。
⇒ここで、なるほどフッターが読み込まれていないからJqueryが動いていないとわかったし、フッターが読みこまれていないのは、その前の記述にエラーがあるからだろうとわかってきた。
(5)調べると、お知らせの新着情報の記述がPHP8に適応していなかったらしい。
⇒ChatGPTに聞いたら、修正を教えてくれた。
↓修正前がこちら
<div id="infoloop5" class="animation">
<h2>新着情報</h2>
<!-- WP_Queryでのループ -->
<?php
$args = array(
'post_type' => 'post', //カスタム投稿名
'field' => 'slug', //基本的にslugに指定します(必須)
'term' => $tax_slug,
'posts_per_page' => 4,
'paged' => $paged
);
endif ?>
<?php $the_query = new WP_Query($args); ?>
<?php if($the_query->have_posts()): ?>
<div>
<ul>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<li>
<div class="topinfoImgCate">
<!-- 記事のサムネイル画像 -->
<div class="newimg">
<?php if(has_post_thumbnail()): ?> <!-- もしこの投稿にアイキャッチ画像があれば -->
<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('topinfo-thumbnail'); ?></a>
<?php else: ?> <!-- もしこの投稿にアイキャッチ画像がなければ -->
<a href="<?php the_permalink(); ?>"><img src="<?php echo get_template_directory_uri(); ?>/images/noimage600.png" alt="no image"></a>
<?php endif; ?>
</div><!-- newimg -->
<div class="newsticker_category"><div class="bgcolor-<?php $cat_now = get_the_category();$cat_now = $cat_now[0];$now_id = $cat_now->term_id ;echo $now_id; ?>"><?php the_category(); ?></div></div><!-- newsticker_category -->
</div><!-- topinfoImgCate -->
<div class="day"><?php echo date("Y.m.d", strtotime($post->post_date)); ?></div><!-- day -->
<h3 class="pageH2"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
</li>
<?php endwhile; ?>
</ul>
</div>
<?php endif ?>
<div id="topinfoallBtn"><a href="/category/newinfo">一覧を見る</a></div>
</div><!-- infoloop5 -->
↓修正後がこちら
<div id="infoloop5" class="animation">
<h2>新着情報</h2>
<!-- WP_Queryでのループ -->
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'post', // 投稿タイプ
'posts_per_page' => 4, // 1ページあたりの投稿数
'paged' => $paged, // ページネーション
'category_name' => $tax_slug, // カテゴリースラッグ
);
$the_query = new WP_Query($args);
?>
<?php if ($the_query->have_posts()): ?>
<div>
<ul>
<?php while ($the_query->have_posts()): $the_query->the_post(); ?>
<li>
<div class="topinfoImgCate">
<!-- サムネイル画像 -->
<div class="newimg">
<?php if (has_post_thumbnail()): ?>
<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('topinfo-thumbnail'); ?></a>
<?php else: ?>
<a href="<?php the_permalink(); ?>"><img src="<?php echo get_template_directory_uri(); ?>/images/noimage600.png" alt="no image"></a>
<?php endif; ?>
</div><!-- newimg -->
<div class="newsticker_category">
<div class="bgcolor-<?php $cat_now = get_the_category(); $cat_now = $cat_now[0]; $now_id = $cat_now->term_id; echo $now_id; ?>">
<?php the_category(); ?>
</div>
</div><!-- newsticker_category -->
</div><!-- topinfoImgCate -->
<div class="day"><?php echo get_the_date('Y.m.d'); ?></div><!-- day -->
<h3 class="pageH2"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
</li>
<?php endwhile; ?>
</ul>
</div>
<?php else: ?>
<p>投稿がありません。</p>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
<div id="topinfoallBtn"><a href="/category/newinfo">一覧を見る</a></div>
</div><!-- infoloop5 -->
(6)おまけにfooter.phpにJqueryのスクリプトの記述をしているので、その前の記述に間違いがあると、それ以降が読み込まれないのでトップページのスライダーなどが動かず表示がおかしくなり、フッターも読み込まれていなかった。
しかし、新着情報の記述をChatGPTの修正通りにやったら、スライドも正常になり、フッターも読み込まれるようになり安心した。
※ここまでで、表示に問題はなくなったのですが、
念のためにwp-config.phpでデバッグモードをtrueにしてみたら、サイト上部にエラーがでていたので調べてみたら、WP本体の問題のようだったので、とりあえずはこのまま行こうと思う。WP本体のアップデートで直る日がくるように思っています。
参考サイト:https://www.digitalboo.net/post/16433/wp6-7-just-in-time-error
関連記事はこちら!
スポンサーリンク






