【WordPress】Glue for Yoast SEO & AMPプラグインでエラー発生中【解決済み】

【WordPress】Glue for Yoast SEO & AMPプラグインでエラー発生中【解決済み】

現在Glue for Yoast SEO & AMPプラグイン(0.4.2)を利用している場合に、AMPのページ表示でエラーが発生しています。

何が起こっているかというと、AMPページが表示されずエラーが表示されてしまいます。

Fatal error: Uncaught Error: Call to a member function canonical() on null in /home/***/public_html/wp-content/plugins/glue-for-yoast-seo-amp/classes/class-frontend.php:162 Stack trace: #0...

アナリティクスを見てたらリアルタイムで離脱してるようだったので、ページを確認すると上記の表示になっていました。
いつからこうなっているかは不明です。おそらくここ数日だと思われます。

気になる方は自分のWordPressの記事URLの最後に「/amp」とか「?amp」をつけてアクセスしてみてください。

で今対応状況はどうなっているかというと、こちらのプルリクエストでバグの対応中のようです。

https://github.com/Yoast/yoastseo-amp/pull/89

近日中には修正がマージされると思いますので、アップデートがすぐに配信されるまで待ちましょう。

一応の対応策

取り急ぎの解決策を紹介しておきます。(おすすめしません)
どこかで不具合があっても自己責任でお願いします。
念のためバックアップファイルを作成してから作業してください。

pluginsディレクトリにある `glue-for-yoast-seo-amp/classes/class-frontend.php` を開きます。

次の `public function fix_amp_post_data` を探してください。

public function fix_amp_post_data( $data ) {
  // 3行追加する
  if ( ! $this->front ) {
    $this->front = WPSEO_Frontend::get_instance();
  }

  $data['canonical_url'] = $this->front->canonical( false );

関数ブロックの最初に、if ( ! $this->front ) { $this->front = WPSEO_Frontend::get_instance(); }  を追加します。

次に `public function fix_amp_post_metadata` を探します。

public function fix_amp_post_metadata( $metadata, $post ) {
  // $this->front = WPSEO_Frontend::get_instance(); コメントアウトする
  // 次の3行追加する
  if ( ! $this->front ) {
    $this->front = WPSEO_Frontend::get_instance();
  }

上記のように最初の1行をコメントアウトして、3行のコードを追加します。

編集したプラグインファイルをサーバーに反映して完了です。

18/05/13追記: バージョン 0.4.3 で解決済み

バージョン0.4.3で修正がマージされています。

もし同じ状態で困っている方は、プラグインを最新版にアップデートしてください。

 

五十川 洋平(Yohei Isokawa)

五十川 洋平(Yohei Isokawa)

フロントエンドエンジニア/面白法人カヤックなどのWeb制作会社に勤務したのち、故郷の新潟に戻り独立。JSフレームワークAngularやFirebase、Google Cloud Platformを使ったWebアプリ開発が得意。 また、Udemyのプログラミング解説の講師、writer.appの自主開発や上越TechMeetupの主催などを行っています。

プロフィール

©Copyright 2022 Yohei Isokawa All Rights Reserved.