Cocoon shortcodes-amazon.php on line 155 のエラー
こんにちは! ゴンタです。
私が運営するWordPressサイトはほとんどAmazonアフィリエイトを利用していますが、WordPressのテーマはCocoonを採用しています。 ここ最近、Amazonの広告表示エラーが頻繁に発生しているためサイトの登録ページを除いたところ下記のようなエラーがページヘッダーに表示されていました。
Warning: First parameter must either be an object or the name of an existing class in /home/hogegoge/hogehoge.com/public_html/wp-content/themes/cocoon-master/lib/shortcodes-amazon.php on line 155
厄介なことにこのエラーはページヘッダに出力されるため、早急に対処しなければGoogle クロールされた場合、エラー表示されたコードが検索結果に含まれ、ページの文字列がエラーコードで殆どを占めてしまうという問題が発生します。
いろいろ調べましたがこのエラーは出るときと出ない時があり、実際にわかったことや対処方法などを下記で詳しく記載したいと思います。
まずは原因を特定 「商品コードのリンク切れ」
Amazonのショートコードで商品を記載しているページの上部に下記のようなエラーが発生していますので、特定するのは簡単だと思います。
Warning: First parameter must either be an object or the name of an existing class in /home/hogegoge/hogehoge.com/public_html/wp-content/themes/cocoon-master/lib/shortcodes-amazon.php on line 155
Cocoonの設定でAmazon商品コードのリンク切れが発生した場合、メールで通知する機能をONにしている人はそのエラーページを確認することで、このエラーを発見する手がかりになると思います。
基本的に、このエラーは昔から出ている記録があるので特定の条件が揃った場合に出るようです。 しかし、2022年5月末時点で一斉に出るようになったことから、何らかのルール変更なのか仕様変更なのか、さっぱりわかりませんがよく頻繁に発生するようになりました。
Cocoonのわいひらさんにたずねても良いのですが、彼は大きな病気で首から下は付随の寝たきりな人ですので、質問に返信したりするのは健常者のパワー以上を使って、調べて返信したりされるので私はよほどのことがない限りフィードバックはしても質問は避けようと思ってます。。 (Cocoonを公開してくれているだけでもありがたいのに・・)
わいひらさんの状態を知らなかった方は彼の存在に対し敬意を払って寄付をされると良いと思います。
そういうわけで、自力で対処したいと思います。
「shortcodes-amazon.php on line 155」が出るときと出ない時がある。
Amazon商品用のショートコードを使っていて、その記載商品とのリンク切れが発生した場合に「shortcodes-amazon.php on line 155」を見ることがありますが、メールでリンクが切れている通知が来て記事ページを修正しようと思ったらリンクは確かに切れているが、「shortcodes-amazon.php on line 155」が出ていない場合もあります。
この現象を何度となく確認しており、この原因はAmazonとのリンクがたまたま切れていてエラーになってメール通知したものの実際はAmazonにその商品が存在し、販売コードも維持している状態に発生します。 ようは、ネットワークの負荷なりトラクションなりでたまたま商品コードリンクが切れていたというのが原因のようです。
別の原因ではキャッシュが問題になっているようで、キャッシュにはCocoonで持つキャッシュ、AmazonAPIのキャッシュ、サイトのキャッシュ、サーバー側でのキャッシュです。 たまたまリンクが切れたキャッシュがあって「shortcodes-amazon.php on line 155」が表示されっぱなしになるという、まぁゾンビみたいな状態でエラーが吐かれる場合があります。
対策1:まずはエラーページの商品キャッシュを削除してみよう
商品リンク切れの通知メールを受け取る設定にしている場合、通知メールにエラーが発生している記事ページのURLが記載されていますので、そのページにアクセスします。 そのページに設定したAmazon商品ショートコードがどのようになっているか確認します。
エラーが発生している場合、ショートコード記述毎に表示されていますので上記のようにAmazonでの商品エラーだったり楽天でのエラーだったりします。 どちらにしても商品ページとの何らかのエラーが発生しているということが分かりますで、左下の「キャッシュ削除」をクリックし、その商品コードが持つAPIキャッシュをクリアします。
一時的なものでしたら「キャッシュ削除」で商品が表示されますが問題があるようだとエラーが表示されたままになります。 エラーが表示されたままの場合は「詳細を見る」で商品ページに移動しリンクされているか、リンク用ASINコードに不備がないか確認します。
ここではほとんどが商品が移動したり、販売取りやめなどでASINコード自体がなくなったりして表示されないことがありますので掲載商品の見直しを行うと良いでしょう。
対策2:まとめてキャッシュを削除する(全てのキャッシュ)
Cocoonの設定ページにある「キャッシュ削除」からAmazon APIのキャッシュを削除することから始まります。
他のキャッシュも消えても問題ないようであれば全てのキャッシュを削除でも構いませんが、ここでは原因がAmazon APIに関するものなのでAmazon APIキャッシュを削除で対応します。
このキャッシュ削除で解決しない場合は、ブラウザのキャッシュとサーバー設定のキャッシュを一度クリアすると良いでしょう。
対策3:エラーがどうしても出る商品は排除する
これは私が何度も経験したことですが、リンク切れエラーが出た記事ページに記載されたAmazonショートコードを毎回出るたびに確認し、キャッシュ削除して商品が表示されていることを確認して対処しているにも関わらず、数日経つとまたエラーが出ている場合があります。
この対策しても何度も出てくる商品ASINコードはAmazonの問題なのかわかりませんが、頻繁にリンク切れを起こすものの商品ページとしては存在しているといった不思議なものです。
この何度もエラーが出るASINコードはあっさりと「ゾンビコード」とおもって別の商品ASINコードを使用したほうが修正時間や確認作業といった無駄なコストが発生するので、さっさと変更したほうが良いと思います。
結果的に「shortcodes-amazon.php on line 155」はよくわからない。
上記の対策で確かに対処はできますが、「shortcodes-amazon.php on line 155」が出るときと出ない時があり、出てないときでも商品コードエラーがある場合もあるという不思議なことが起こってます。 これは利用するサーバーによるものなのか、設定の問題なのかAmazonのイタズラなのかさっぱりわからない状態で数年経過しています。
しかし、ここ最近非常に発生する事が増えており、Google検索をしても「shortcodes-amazon.php on line 155」を吐いてしまって検索結果に「shortcodes-amazon.php on line 155」コードが載ってしまってる他のサイトもあるので私だけの問題ではなく何かしらの事情があるのかもしれません。
上記3つの対策で解消はされるので、エラー通知が来たら即修正するのが収益ダウン防止にもなりますので、作業は増えてしまいますが、当面これで対処するしかなさそうです。
エラーコードが出てしまって慌てて右往左往された方もおられると思いますが、大丈夫ですよ!
こまめに対処しましょう。