現在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で修正がマージされています。
もし同じ状態で困っている方は、プラグインを最新版にアップデートしてください。