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
関連記事はこちら!
スポンサーリンク