WordPressのプラグインであるAmazon JSを使っている人の中に、”Product Advertising APIのエラー“が表示された方がいらっしゃるのではないでしょうか?
エラー表示の文言を確認すると、「Product Advertising APIのサーバーにアクセスが集中しているから、しばらくしてから接続してね」(日本語訳)が表示されます。
Product Advertising APIエラーの本当の理由
もちろんサーバーにたまたまアクセスが集中して、”Product Advertising APIのエラー”が出るのかもしれません。ですが自分の場合、アクセスが集中しているときに商品を呼び出そうとしたからエラーが表示されたわけではありません。原因は約1ヶ月の間にProduct Advertising API(PA-API)経由の売上が全くなかったためです。
Amazonアソシエイトの[重要] Product Advertising API 利用ポリシーの変更を確認してみましょう。ページの一部で以下のとおりに説明されています。
売上実績の発生がない場合は、PA-APIの利用開始はできません。
また、発送済み商品売上が過去30日以内に発生していない場合、PA-APIをご利用いただけなくなる恐れがございます。なお 、Amazon Link Builder(WordPressプラグイン)のご利用についても、先に挙げた条件が適用となり、売上実績が必要となります。
読んで字のごとくです。Product Advertising API経由の売上実績(発送済み売上)がないと、商品情報が配信されないそうです。
Product Advertising API経由の売上確認
自分が保有しているAmazonアソシエイトのダッシュボードから[レポート]を確認するとこんな感じです。直近1ヶ月の間にProduct Advertising API経由の売上実績は0円でした。念のためにAmazonアソシエイトのカスタマーサポートセンターに確認をとってもらうと、やはり自分の場合、売上実績がないために商品情報が配信されないそうです。
既存のAPI情報の状態
なお、すでにAmazonJSで商品を挿入していた場合、こんな感じです。リンクをクリックしてもAmazonの商品ページに遷移しません。
PA-APIエラー発生後の対応
次にProduct Advertising APIのエラーが発生した後の対応です。単にサーバーにアクセスしづらいだけであれば、しばらく時間が経過したのちに、再度APIに接続を行えば良いだけですが、問題はProduct Advertising API経由での売上実績がない場合の対応です。
Product Advertising API経由での売上実績がない場合の対応
この場合、通常のAmazonアソシエイトのリンクを使うしかありません。前述したカスタマサポートセンターからの回答によりますと、通常のAmazonアソシエイトのリンクで売上実績が上がると、再びProduct Advertising APIを利用したAmazon JSが使えるようになるそうです(ただしその売上実績はどれぐらいの規模が必要かは触れられていない)。
残骸のようなAmazon JSショートコード
エコテキブログの場合、主な収益源はGoogle Adsenseです。アフィリエイトは参考程度にやっているので、Product Advertising APIを利用したAmazon JSプラグインが再び使えるようになることは期待できません。そうなるとAmazon JSはもはや不要なので、プラグインの停止と削除をしました。
このとき問題になるのが、Amazon JS特有のショートコードです。プラグインを削除すると、まるで残骸のようにショートコードだけが残ります。
wp_postからのショートコードの削除について
おそらく多くの人は残骸のようなショートコードは削除したいでしょう。使っているショートコードが1つか2つだけで、どの記事に使っているか特定できる場合は、手作業に削除でも差し支えはないでしょう。
問題は自分のように大して売上もないのに、少なくとも100個以上のショートコードを使ってなおかつどの記事で使っているかよく分からないケースです。
ショートコードを削除するSQL文の検討
2019年4月20日(土)に行われた「さくらクラブ」の「IT系初心者もくもく勉強会の日」に参加したところ、ショートコードだけを取り除くSQL文について助言をいただきました。ざっくりといえばこんな感じになると思います。
UPDATE wp_posts SET post_content=REPLACE(post_content, "hogehoge", "");
“hogehoge”のところには”[amazonjs asin=…”で始まる正規表現を考えないといけません。また正規表現を挿入したSQL文が出来上がったとしても、妥当性かどうか検討する必要もありません。また機会を見て追加情報の記事をUPします。