先日、Amazonアソシエイトのアカウントが突然閉鎖されました。
そのためCocoonのAmazon商品リンクショートコードが利用できなくなりました。
今まで投稿した記事のAmazonショートコードはキャッシュが消えると表示されなくなるので、
暫定的に楽天商品リンクショートコードに置き換えた時にやった事を紹介します。
Amazonアソシエイトが使えなくなったら
まずAmazonからの閉鎖メールで「Amazonコンテンツ削除してね」って言われるので、Amazonのリンクを削除する必要があるようです。
※そのまま掲載し続けても紹介料は発生しません
PA-APIが利用できなくなる
PA-APIはAmazonショートコードで商品情報を取得するため利用されます。
今後Amazonショートコードを入力しても新しく商品情報が取得できなくなります。
Amazonショートコードはどうなる?
Amazonショートコードはキャッシュが保持されているうちは表示されるようになっています。
Cocoon設定>API>キャッシュ設定の保存期間で取得してからの保存期間を確認できます。
この日数を過ぎてもバックアップキャッシュが消えるまでは表示されます。
使えなくなってから日数を変更しても意味ないかな?(多分)
Amazon商品取得エラーが連発すると表示が遅くなる
まず、商品のキャッシュ期限が切れて「Amazon商品取得エラー」が出ている場合、そのままだとショートコードを大量に使っているページは特に表示が遅くなりました
ページが重くなって訪問者数が激減していたので置き換える前に、WP Fastest Cacheというページキャッシュプラグインを導入し一時的にエラーで重くなるのを防ぎました。
一度ショートコードを利用しているページの表示を確認して重いようなら一時的にでも導入すると改善するかもしれません。
インストール方法やCocoonを利用しているブログでの設定は以下の記事が参考になります
アクセスキーID・シークレットキー・トラッキングIDを削除すると
Cocoon設定>API>Amazonの「アクセスキーID」「シークレットキー」「トラッキングID」を削除すると、Amazonショートコードは次のようなエラーテキストが表示されます。
キャッシュを表示しておきたい場合は一旦削除せずそのままでもいいかもしれません。
Amazonショートコードを楽天ショートコードに置き換える
キャッシュ表示で様子見していいかな~という感じもしたのですが、
- 商品画像を掲載したままというのは権利的にまずい気がする。
- ゆくゆくはAmazonアソシエイトに再申請したい(願望)のでわざわざ記事を書き換えたくない
- そもそも全部書き換えるの面倒くさい
という事で、functions.phpを編集して自動でショートコードを置換する事にしました。
データベースの書き換えは行われませんので必要なくなったらコードを削除してください。
前提条件
- Amazon商品リンクショートコードにkwオプションを設定している。
- 楽天APIが利用出来る。
- kwの値を
"
か'
で囲んでいる(OK:kw=”キーワード” NG:kw=キーワード)
具体的には次のように置換されるようにします。
- 置換前
[amazon asin="XXX" kw="検索用キーワード"]
- 置換後
[rakuten asin="XXX" kw="検索用キーワード" search="検索用キーワード"]
functions.phpに追加するコード
functions.phpは編集前に必ずバックアップを取って保存してください。編集後エラーが出た場合バックアップファイルを元に復元してください。
//Amazonショートコードを楽天ショートコードに置き換える add_filter('the_content', function( $content ){ $content = preg_replace('{\[amazon ([^\]]*kw=([\"\'].+?[\"\'])[^\]]*)\]}', '[rakuten $1 search=$2]', $content); return $content; },10);
Cocoon設定
functions.phpにコードを追加したら、Cocoon設定>API>Amazonの「アクセスキーID」「シークレットキー」「トラッキングID※」を削除します。
※APIは使えないけどトラッキングIDが使える人は残す。
必要なければ「Amazon検索ボタンを表示する」のチェックも外す。
注意点
- kwに設定されたキーワードで絞り込みが十分出来ない場合関係のない商品が表示される可能性があります。
- 数が多い場合APIリクエスト制限がかかるかもしれません。しばらく待てば取得出来るようになると思います。
- キャッシュプラグインを利用している場合、functions.phpの編集後キャッシュを削除する必要があります。(APIリクエスト制限で表示されないうちは使わない方がいいかも)
- すべての環境で動作を保証出来ないので不具合がでる場合はコードを削除してください。
さいごに
今回の方法は思った商品が表示されない可能性も高いので暫定的な対処法になります。
いずれAmazonアソシエイトに再び合格してAmazonショートコードが使えるようになるか、使えなくなったショートコードを手動で書き換え終えるまでの一時しのぎという感じです。
突然使えなくなって同じようにお困りの方は注意点をご確認の上で参考になればと思います。
ちなみにうちの場合、以下のような状態です。