CocoonのAmazonショートコードを楽天に一括で置換する

Amazonショートコードを楽天に一括で置換する

先日、Amazonアソシエイトのアカウントが突然閉鎖されました。

【実録】突然Amazonアソシエイトが閉鎖されてしまった理由
売り上げも極わずかですがなかったわけではなく、規約違反もない(多分)、閉鎖の連絡も見当たらない(後に原因判明)。とにかくアカウント復活が出来ないか?問い合わせました。その経緯など超ざっくり紹介していこうと思います。

そのためCocoonのAmazon商品リンクショートコードが利用できなくなりました。

今まで投稿した記事のAmazonショートコードはキャッシュが消えると表示されなくなるので、
暫定的に楽天商品リンクショートコードに置き換えた時にやった事を紹介します。

スポンサーリンク

Amazonアソシエイトが使えなくなったら

まずAmazonからの閉鎖メールで「Amazonコンテンツ削除してね」って言われるので、Amazonのリンクを削除する必要があるようです。
※そのまま掲載し続けても紹介料は発生しません

PA-APIが利用できなくなる

PA-APIはAmazonショートコードで商品情報を取得するため利用されます。

今後Amazonショートコードを入力しても新しく商品情報が取得できなくなります。

Amazonショートコードはどうなる?

Amazonショートコードはキャッシュが保持されているうちは表示されるようになっています。
Cocoon設定>API>キャッシュ設定の保存期間で取得してからの保存期間を確認できます。

この日数を過ぎてもバックアップキャッシュが消えるまでは表示されます。
使えなくなってから日数を変更しても意味ないかな?(多分)

Amazon商品取得エラーが連発すると表示が遅くなる

まず、商品のキャッシュ期限が切れて「Amazon商品取得エラー」が出ている場合、そのままだとショートコードを大量に使っているページは特に表示が遅くなりました

ページが重くなって訪問者数が激減していたので置き換える前に、WP Fastest Cacheというページキャッシュプラグインを導入し一時的にエラーで重くなるのを防ぎました。

一度ショートコードを利用しているページの表示を確認して重いようなら一時的にでも導入すると改善するかもしれません。

WP Fastest Cacheの設定スクリーンショット

当ブログでの設定(必要最低限にしてます)

インストール方法やCocoonを利用しているブログでの設定は以下の記事が参考になります

アクセスキーID・シークレットキー・トラッキングIDを削除すると

Cocoon設定>API>Amazonの「アクセスキーID」「シークレットキー」「トラッキングID」を削除すると、Amazonショートコードは次のようなエラーテキストが表示されます。

キャッシュを表示しておきたい場合は一旦削除せずそのままでもいいかもしれません。

Amazon APIのアクセスキーもしくはシークレットキーもしくはトラッキングIDが設定されていません。「Cocoon設定」の「API」タブから入力してください。

Amazonショートコードのエラー

Amazonショートコードを楽天ショートコードに置き換える

キャッシュ表示で様子見していいかな~という感じもしたのですが、

  • 商品画像を掲載したままというのは権利的にまずい気がする。
  • ゆくゆくはAmazonアソシエイトに再申請したい(願望)のでわざわざ記事を書き換えたくない
  • そもそも全部書き換えるの面倒くさい

という事で、functions.phpを編集して自動でショートコードを置換する事にしました。

データベースの書き換えは行われませんので必要なくなったらコードを削除してください。

ちなみにうちの場合、以下のような状態です。

  • Amazonアソシエイト利用不可×
  • もしもアフィリエイト未登録×
  • 楽天アフィリエイト利用可○

前提条件

  • 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ショートコードが使えるようになるか、使えなくなったショートコードを手動で書き換え終えるまでの一時しのぎという感じです。

突然使えなくなって同じようにお困りの方は注意点をご確認の上で参考になればと思います。

タイトルとURLをコピーしました