PHP8以上にしたらエラーになった時の解決対処方法の備忘録

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

ポチッ☆とクリックお願いします!
↓ ↓ ↓

  • にほんブログ村 IT技術ブログ ホームページ・サイト制作支援へ

コメントは受け付けていません。

サブコンテンツ

TOP