• 解決済 Chanchan.

    (@eureka20080321)


    前回phpを更新後に起きたトラブルを教えていただいて解決できたのですが、さらに他ページでトラブルが起きていました。

    教えていただいたように、以前のphpバージョンに戻すと起きないエラーでした。

    どうかご教授をよろしくお願いします。


    Warning: Attempt to read property "ID" on null in /home/eureka080321/eureka.salon/public_html/wp-content/themes/beautiplus_child/functions.php on line 152

    Warning: Attempt to read property "ID" on null in /home/eureka080321/eureka.salon/public_html/wp-content/themes/beautiplus_child/functions.php on line 238

    Warning: Attempt to read property "ID" on null in /home/eureka080321/eureka.salon/public_html/wp-content/themes/beautiplus_child/functions.php on line 239

    Warning: Attempt to read property "ID" on null in /home/eureka080321/eureka.salon/public_html/wp-content/themes/beautiplus_child/functions.php on line 240

    Warning: Undefined variable $description in /home/eureka080321/eureka.salon/public_html/wp-content/themes/beautiplus_child/functions.php on line 310

    Warning: Attempt to read property "ID" on null in /home/eureka080321/eureka.salon/public_html/wp-content/themes/beautiplus_child/functions.php on line 152

    Warning: Attempt to read property "post_content" on null in /home/eureka080321/eureka.salon/public_html/wp-content/themes/beautiplus_child/functions.php on line 327

    Warning: Undefined variable $description in /home/eureka080321/eureka.salon/public_html/wp-content/themes/beautiplus_child/functions.php on line 310

    efined variable $sc_blogcard in /home/eureka080321/eureka.salon/public_html/wp-content/themes/beautiplus_child/functions.php on line 423

    ヘルプの必要なページ: [リンクを見るにはログイン]

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター Yukinobu Asakawa

    (@yukinobu)

    こんにちは。
    今回のエラーも子テーマ beautiplus_child で発生しているものですね。
    該当部分のコードとこの子テーマでどんなカスタマイズされているのかを共有してもらった方が良いかもしれません。

    トピック投稿者 Chanchan.

    (@eureka20080321)

    お忙しい中、ご返信ありがとうございます。以前は大変お世話になりました。今回もご教授どうかよろしくお願いします。

    ファンクション152の部分   $seo_title = get_post_meta($post->ID,'seo_title',true);

    238 $keywords = get_post_meta($post->ID,'keywords',true);
    239 $noindex = get_post_meta($post->ID,'noindex',true);
    240 $nofollow = get_post_meta($post->ID,'nofollow',true);

    152 $seo_title = get_post_meta($post->ID,'seo_title',true);

    310 if($description) return esc_html($description);
    327 preg_match('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $match);

    423 <div class="blogcard_excerpt">'. $excerpt .'</div>

    表示されるエラーは、以上となります。

    こちらのサポートで丁寧に教えていただいたコードになります。

    またphpを更新すると、なぜこのようなエラーが発生してしまうのでしょうか?

    最後までお付き合いいただけますと大変助かります。

    モデレーター Yukinobu Asakawa

    (@yukinobu)

    返信が遅くなりました。
    152行目のコードについて、説明します。

    Warning: Attempt to read property "ID" on null in /home/eureka080321/eureka.salon/public_html/wp-content/themes/beautiplus_child/functions.php on line 152

    コード実行時に $post 変数が null または未定義になっているため発生しています。PHP のバージョンが上がるとエラーハンドリングが厳密になる場合があり、以前は警告レベルだったものが、警告として表示されるようになることがあります。

    この場合の改修例としては、以下のようなコードになります。
    get_the_ID() 関数を使用することで、現在の投稿 ID を安全に取得できます。ただ、この修正が適切かどうかはコード全体のコンテキストや $seo_title の利用目的によります。

    $post_id = get_the_ID();
    if ( $post_id ) {
    $seo_title = get_post_meta($post_id, 'seo_title', true);
    } else {
    $seo_title = '';
    }

    複数のエラーメッセージが出力されている状態ですので、子テーマに記述されているカスタマイズコードの全てを見直した方が良いと思います。
    今の状態ですと、152行目の修正だけではエラーは解消できないと思います。

    次のご質問の事項に回答します。

    またphpを更新すると、なぜこのようなエラーが発生してしまうのでしょうか?

    難しい表現を使わずに表せば、
    子テーマでカスタマイズしている部分のPHPコードが古くなり、新しいPHPのバージョンに対応できなくなるためです。

    PHPもバージョンアップするごとに、新機能の追加、セキュリティ強化、パフォーマンス改善などの改良が加えられています。
    それに対応するために、WordPress コア(本体のことです)、プラグイン、テーマは、コミュニティーで活動する開発者の方が対応してくださっていますが、子テーマのように、独自に記述されたコード部分は、ユーザーさんご自身でケアしていくしかありません。

    一方で、WordPress自体も年々標準機能で実現できることが増えています。昔は、子テーマを作った上で、PHPでカスタマイズしなければできなかったことが、今ではブロックエディターやブロックテーマ等の機能を使うことによって、コードを書かずにできるようになったりしています。
    標準機能のできることは、わざわざカスタマイズでコードを書かない方が、コストが低いわけです。

    できれば、子テーマでカスタマイズしていること(どんな機能を追加しているのか)を共有してくださった方が、場当たり的な対処にならず良いのですが。

    トピック投稿者 Chanchan.

    (@eureka20080321)

    Yukinobu Asakawaさま

    大変お忙しい中、ご回答をいただき大変感謝いたします。ありがとうございます。

    1つ目の152エラーの件ですが、全体の{}のコードは

    function title_update($title) {
    global $post;
    $seo_title = get_post_meta($post->ID,'seo_title',true);
    if(is_singular() && $seo_title) $title['title'] = $seo_title;
    return $title;
    }

    となっており、カスタムフィードの設定とありました。

    教えていだだきましたコードを上書きしたいと思うのですが、152にあたる部分にそのコードを使い、書き換えると良いということでしょうか?

    PHPに関しまして、大変わかりやすくご回答をいただき、こちらもありがとうございます。

    子テーマに関して少し考える時が来ているのかも知れませんね。

    できれば、子テーマでカスタマイズしていること(どんな機能を追加しているのか)

    エラーの出ている部分全体のコードと、どんな事を変更したくて質問し、ご教授いただいたのか?過去の投稿と照らし合わせて改めてまた質問させてください。

    よろしくお願いします。

    モデレーター Yukinobu Asakawa

    (@yukinobu)

    ご確認ありがとうございます。

    直前で共有してくださったカスタマイズコードの処理は、
    現在、サイトのタイトルをカスタムフィールド seo_title の値に置き換えるカスタマイズが行われています。このカスタマイズにより、個別の投稿や固定ページごとにカスタムタイトルを設定できます。ただし、この機能はテーマのコード (functions.php) に直接追加されています。

    このようなカスタマイズの場合には、SEO関連のプラグイン(例:Yoast SEOなど)で、同様のことが実現できると思います。

    トピック投稿者 Chanchan.

    (@eureka20080321)

    Yukinobu Asakawaさま

    プラグインも検討したいと思います。

    ひとまずは、エラーの出ない部分まで phpを戻して対応したいと思います。

    また相談の際は、懲りずにお付き合いいただければ助かります。

    お忙しい中、本当にありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • このトピックに返信するにはログインが必要です。